2016-08-22 43 views
0

MainActivity在我的應用程序中有launchMode設置爲singleTask。如果我從MainActivity開始ActivityB,然後將應用程序置於後臺,並從應用程序屏幕啓動我的應用程序,它將無法正常恢復。 ActivityB自動結束,MainActivity恢復。我預計ActivityB而不是恢復。爲什麼會發生這種情況,我能做些什麼才能使其正常工作?它工作正常,但沒有singleTask標誌,但我需要該標誌用於其他目的。使用singleTask標誌時,應用程序恢復到錯誤的活動

順便說一下,我的應用程序從最近的應用程序屏幕正確恢復。

+0

你確定你沒有在ActivityB中的onPause()/ onResume()方法中調用finish()嗎? –

回答

0

在LAUNCHER活動中使用以下代碼。

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

if (!isTaskRoot()) { 
    finish(); 
    return; 
} 

// Rest of your onCreate code goes here 
} 
0

活動B被關閉,因爲它從一個活動推出,這是Android的正常行爲,因爲活動A需要重新啓動(singleTask)和所有相關的實例會殺/完成。

那麼,你可以做的是實現shared-preference

的活動爲您應該是這樣的:

public class MainActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //// read share preference 
    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    int defaultValue = getResources().getInteger("MYSHARE_PRFERENCE"); 
    int isOpened = sharedPref.getInt("IS_ACTIVITY_B_ALREADY_OPENED", defaultValue); 

    if (isOpened == 1) 
    { 
     //resume activity B 
     startActivity(new Intent(MainActivity.this, ActivityB.class)); 
    }  
    //// 

    findViewById(R.id.text).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivity(new Intent(MainActivity.this, ActivityB.class)); 

      //// write on share preference 
      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPref.edit(); 
      editor.putInt("IS_ACTIVITY_B_ALREADY_OPENED", 1); 
      editor.commit(); 
      //// 
     } 
    }); 
} 

}

P.S:我沒有編譯它,代碼可能在編譯錯誤。但股票偏好可以解決您的問題。

+0

感謝您的努力幫助,但從MainActivity啓動ActivityB不會恢復它。活動狀態丟失。顯然這個問題沒有解決方案。這個問題已經在這裏問過http://stackoverflow.com/questions/2417468/android-bug-in-launchmode-singletask-activity-stack-not-preserved – Egis

相關問題