如果用户手动杀死应用程序,则从其离开的位置恢复活动

Raj*_*wal 0 java android android-lifecycle android-activity

我正在处理一个应用程序,其中我从活动A(主要活动)移动到活动B到活动C.所有这一切都正常,但问题发生在用户通过从任务托盘中删除它杀死应用程序.

要理解我的问题,说用户从A移动到B然后C,但在完成活动C中的任务之前,用户杀死了应用程序.因此,当用户再次通过按下应用程序图标打开应用程序时,我想启动用户在杀死应用程序时的最后一个活动C,而不是Android的默认行为(主要活动A)再次启动应用程序的新实例.

我尝试过的:

1)我尝试使用"onSaveInstanceState"和"onRestoreInstanceState",但我认为它们在方向改变时使用,或者我们通过按后退按钮返回.

2)我试图将所有内容保存在"onPause"中,因为当活动被破坏时,暂停调用99.99%次,并且通过使用静态标志我打开了最后一个活动,它对我有用,但我想要一些好的示例或技术来完成这项工作.

所以任何人都可以帮我实现同样的目标.. ??

我请求其他成员提供代码示例.

提前致谢.

W4R*_*0CK 5

将状态存储在每个Activity人的身上@onPause().

所以Activity你想要的每一个:

@Override
protected void onPause() {
    super.onPause();

    SharedPreferences prefs = getSharedPreferences("RESTART", MODE_PRIVATE);
    Editor editor = prefs.edit();
    editor.putString("last_left", getClass().getName());
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)

以及Shell将成为启动器,主要活动的活动:

public class Shell extends Activity {

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

        Class<?> classActivity;

        try {
            SharedPreferences prefs = getSharedPreferences("RESTART", MODE_PRIVATE);
            classActivity = Class.forName(prefs.getString("last_left", getClass.getName()));
        } 
        catch(ClassNotFoundException ex) {
            classActivity = your_Activity1.class;
        }

        startActivity(new Intent(this, classActivity));
    }
}
Run Code Online (Sandbox Code Playgroud)

[来源修改]

  • 这是一个很好的解决方案,但他也想保存状态。所以我认为在 onResume 中,您可以像在解决方案中一样保存最新活动,并在 onPause 中保存状态并在可用时恢复。 (2认同)