我過去成功的做法是創建作爲主要活動的無形活動。它永遠不會顯示給用戶,因爲它會在構造函數中啓動「正確」的活動。
由於這個原因,沒有必要將活動設置爲「不可見」,因爲它不會加載視圖。
在裏面我放置了一些邏輯,它決定了哪個活動首先顯示給用戶。這對我的用例非常合適 - 試試看。
艙單申報(注意noHistory="true"
參數):
<activity
android:name=".activity.EntryActivity"
android:launchMode="singleInstance"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注:正如指出out in comments below,該launchmode設置無關這個問題IIRC。這與EntryActivity啓動的各種方式有關。
EntryActivity類:
public class EntryActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// launch a different activity
Intent launchIntent = new Intent();
Class<?> launchActivity;
try
{
String className = getScreenClassName();
launchActivity = Class.forName(className);
}
catch (ClassNotFoundException e)
{
launchActivity = DefaultHomeActivity.class;
}
launchIntent.setClass(getApplicationContext(), launchActivity);
startActivity(launchIntent);
finish();
}
/** return Class name of Activity to show **/
private String getScreenClassName()
{
// NOTE - Place logic here to determine which screen to show next
// Default is used in this demo code
String activity = DefaultHomeActivity.class.getName();
return activity;
}
}
在這種情況下,android:launchMode =「singleInstance」的用途是什麼?當我包含它時,我的應用程序中沒有任何後續活動顯示在歷史記錄中(我的應用程序不存在於最近的應用程序列表中)。但是,當我排除這條線時,一切似乎都按預期工作。 – jokeefe
@jokeefe IIRC這是我爲了回答問題而留下的生產代碼的一部分。我認爲你是對的 - 不需要回答這個問題。在我的情況下,它必須處理這種'EntryActivity'啓動的不同方式...... –
噢,不錯。我希望我沒有忽略某些東西。謝謝你回到我身邊! – jokeefe