【问题标题】:Open application on the last screen used在使用的最后一个屏幕上打开应用程序
【发布时间】:2020-07-15 03:35:46
【问题描述】:

每当我点击我的应用程序图标时,它总是会在登录屏幕上打开,即使我之前已经在另一个页面上打开过它,即使我只是返回应用程序的主屏幕,点击应用程序也会返回到页面登录。我想知道我是否可以保证它总是在我停止的最后一个屏幕上打开,除非我完全退出了应用程序。

【问题讨论】:

  • 如果您没有在清单中使用任何特殊的launchModes,这是标准的 Android 行为。如果您遇到此问题,您可能会看到这个讨厌的 Android 错误:stackoverflow.com/questions/16283079/… 要验证,请在手机上安装您的应用程序,然后强制关闭应用程序(设置->应用程序->您的应用程序->强制关闭)然后启动通过单击主屏幕上的图标,您的应用程序,转到另一个Activity,按主屏幕,从主屏幕再次启动应用程序,它应该可以工作了。
  • 只有当您想在几天或几周不使用后返回到您离开的地方时,才需要使用SharedPreferences 的答案。一般来说,这不是必要或可取的行为。

标签: java android android-studio android-intent


【解决方案1】:

为此,您可以使用共享首选项。每次用户停止应用程序时,您应该将活动的名称存储在内存中,因此下次打开应用程序时,您可以读取文件并检查之前使用的活动。 写入文件:

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);    

并且对于每个活动都覆盖此方法:

@override
public void onDestroy() {
    Editor editor = sharedpreferences.edit();
    editor.putString("LastOpened", "activity_name");
    editor.apply();
}

要在之前销毁的 Activity 中打开应用,请在登录 Activity 中写入:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("LastOpened", "");
switch(name) {
    case "LoginActivity": {
        //do nothing
    }
    case "OtherActivity" : {
        startActivity(new Intent(this, OtherActivity.class));
    ....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多