恢复图标上的最后一个活动按下以设置结果

时间:2017-09-08 17:50:25

标签: android android-activity stack manifest

我正在尝试重新打开图标按下的上一个活动。但是当我从main中删除launchMode SingleTask时,它从启动开始。

以下是该方案 -  A = Splash,B = Activity1,C = Activity 2。

我想在图标按下启动C.

开始时     A ----> B ----> C(这里按下主页图标) 点击图标它运行A但我想要C。任何人都可以解决这个问题吗?

启动C-

Intent urlIntent = new Intent(this,C.class); 
urlIntent.putExtra("stt",Str);
startActivityForResult(urlIntent,REQUEST_CODE);

2 个答案:

答案 0 :(得分:3)

案例I.按主页按钮后,检查您的应用是否处于后台。如果是,那么它应该打开活动C.

案例II。如果你的应用程序因内存不足而被杀死,那么它将从启动器活动开始,即活动A.

我也遇到过这个问题。出现此问题的原因是设备设置已更改。如果用户启用“不保留活动”,则在您按home或启动新活动时,所有活动都将被销毁。

注意:我使用默认启动模式

 Attaching a screen for reference

答案 1 :(得分:0)

您的应用始终从Activity开始,并在Manifest.xml中使用过滤器intent.action.MAIN

如果您的应用程序已经运行,那么下次应用程序启动时,它将自动从上次打开的活动中恢复。

现在,如果您的应用被杀或被删除,那么您可以在活动恢复或暂停时将活动存储在SharedPreferences中,并在下次开始时检查您的情况下的Activity 'A'。是您在Activity中存储SharedPreferences名称时最后一次打开的活动。

示例:

如果您有三项活动A - > B>> C

将名称存储在所有活动的onPause()中,使用SharedPreference来存储其名称:

@Override
protected void onPause() {
    super.onPause();
    SharedPreferences prefs = getSharedPreferences("Pref", MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("lastOpenedActivity", getClass().getName());
    editor.apply();
}

在你的Splash Activity A中,使用此偏好设置为onCreate()中的checfk -

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

    Class lastActivity;

    try {
        SharedPreferences prefs = getSharedPreferences("Pref", MODE_PRIVATE);
        lastActivity = Class.forName(prefs.getString("lastOpenedActivity", ParentActivity.class.getName()));
    } catch (ClassNotFoundException ex) {
        lastActivity = ParentActivity.class;
    }

    startActivity(new Intent(this, lastActivity));
    this.finish();
}