【问题标题】:Restore android app stack from background从后台恢复 android 应用程序堆栈
【发布时间】:2010-01-14 00:53:25
【问题描述】:

假设我从主屏幕启动我的应用程序,浏览一些活动,然后按下主屏幕键并在 Gmail 应用程序中执行其他操作。

检查完邮件后,我再次按主键退出 Gmail 应用程序,然后再次单击主屏幕上我的应用程序图标返回。

当我返回我的应用程序时,我希望它返回到我上次参加的活动,而不是开始一个全新的会话。我整天都在想办法解决这个问题。

我的第一个活动清单如下:

 <activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:alwaysRetainTaskState="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

类别属性 LAUNCHER 使我的应用程序始终从活动 Main 开始,所以我不知道如何恢复最后一个活动。人们告诉我使用 sharedpreferences 来保存最后一个活动并将其加载到 Launch,但我不认为它打算这样做,因为它不是很优雅。

【问题讨论】:

  • 您的清单看起来不错;它应该按您的预期工作。你有没有机会只在调试器下看到这个,就像这个几乎相同的问题? stackoverflow.com/questions/2061143/…
  • 当我得到你的答案时我想通了,它与 Eclipse 调试无关,而是与运行配置有关:我将启动操作设置为:在 Android 下启动默认活动标签。我把它改成了“什么都不做”,它成功了。不敢相信我花了这么长时间才意识到这一点!谢谢
  • 你应该在你的答案中添加一个答案。

标签: java android


【解决方案1】:

我认为这是唯一的方法,因为当您启动应用程序时,Launcher 应用程序会发送意图“android.intent.action.MAIN”,而您的应用程序中唯一响应此意图的活动是您的主要活动,因此它被激活。因此,您唯一能做的就是将您的会话保存在某处,如果已经保存会话,则在活动启动时将应用程序恢复到以前的状态。

【讨论】:

    【解决方案2】:

    尝试在清单中使用其中一种:

     <activity android:launchMode=["multiple" | "singleTop" |
                                  "singleTask" | "singleInstance"] ...
    

    【讨论】:

      【解决方案3】:

      onResume() 和 onPause 是否正确实施?

      protected void onResume(){
          super.onResume();
      }
      
      protected void onPause() {
          super.onPause();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-27
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多