【问题标题】:Resuming last activity on icon press to set result在图标按下恢复上一个活动以设置结果
【发布时间】:2018-02-17 17:01:44
【问题描述】:

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

以下是场景 - A = 飞溅,B = 活动 1,C = 活动 2。

我想在图标按下时启动 C。

开始
A ---->B---->C(此处按下主页图标) 在单击图标上它运行 A 但我想要 C 。谁能解决这个问题?

启动C-

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

【问题讨论】:

  • stackoverflow.com/questions/5757562/… 你需要启动画面吗?
  • @jL4 splash 不是强制性的,我无法完成之前的活动。
  • 你到底在做什么——当你从菜单中按下你的应用程序图标进入后台后——最后一个活动将自动恢复!!或者您是否想要关闭您的应用程序后,从菜单重新启动时,单击您的应用程序图标后应该恢复最后一个活动?
  • @shadygoneinsane 我已经更新了我只是想打开第二个活动的问题。
  • 请发布您的清单。您可能会看到一个长期存在且从未修复的令人讨厌的 Android 错误。有关更多详细信息和解决方法,请参阅stackoverflow.com/questions/16283079/…。要检查您是否看到此错误,请在手机上安装您的应用程序。杀死应用程序(设置->应用程序->您的应用程序->强制关闭)。现在从主屏幕图标启动您的应用程序。打开 ActivityB -> ActivityC。按主页。按主屏幕上的应用程序图标再次启动您的应用程序。如果您看到 ActivityC,您就会看到这个讨厌的错误。

标签: android android-activity stack manifest


【解决方案1】:

CASE I. 按下 Home 键后检查您的应用是否在后台。如果是,那么它应该打开活动 C。

案例二。如果您的应用由于内存不足而被终止,那么它将从启动器活动(即活动 A)开始。

我也遇到过这个问题。此问题是由于更改了设备设置造成的。如果用户启用“不保留活动”,那么如果您按主页或开始新活动,所有活动都将被销毁。

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

【讨论】:

    【解决方案2】:

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

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

    现在,如果您的应用程序被杀死或刷出,那么您可以在活动恢复或暂停时将活动存储在 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() 中检查 -

     @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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2013-02-18
      • 1970-01-01
      • 2023-04-08
      • 2017-09-14
      相关资源
      最近更新 更多