当活动处于“onPause”状态时,通过意图接收恢复应用程序(活动)

5

以下是我的场景:

  • 用户打开应用并使用它 => 应用程序在其中一个屏幕上
  • 用户使用 Home 键将应用程序移至后台
  • 用户开始浏览并浏览我的网站。在网站中,某些链接会打开应用程序
  • 用户在浏览器中单击链接,应用程序启动,但即使活动处于 onPause 状态,也不会恢复,而是重新启动,因此当前会话被丢失。

我的主要活动正在使用意图过滤器数据,因此我已添加:

  <activity android:name=".HomeActivity"
            <intent-filter>
                <data android:scheme="myprop" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
  </activity>

当用户在浏览器中点击自定义URL时,我的应用程序会启动并开始活动。因此,如我之前所述,如果我的HomeActivity处于onPause状态(表示用户已经使用它),是否可能简单地恢复它(当然要解析myprop参数),同时保留当前用户的进度?


你用过哪个集成开发环境(IDE)进行开发? - Haresh Chhelana
请查看:https://dev59.com/nmw15IYBdhLWcg3w4_xL - Haresh Chhelana
问题是我没有从IDE启动应用程序,当用户在Chrome /浏览器中按下链接时,应用程序会启动。 - Alin
为什么不使用savedInstanceState更多信息 - Skynet
1个回答

4

您需要将活动的启动模式定义为single instance。为此,请在Android清单中更新您的Activity:android:launchMode="singleInstance"

之后,您现有的活动将被打开,并将收到Activity.onNewIntent(Intent intent)的回调。


我认为这是正确的方法,但我发现一个奇怪的行为:当用户在打开应用程序时点击浏览器时,它可以正常工作,就像我想要的那样。但是,当我从启动器启动应用程序时,它不会像以前那样恢复...它只是关闭了。我不知道该如何解释。如果根本没有启动应用程序,并且我从启动器图标开始,它第一次可以正常工作。第二次我按下图标,它只是打开和关闭,并且onCreate、onNewIntent或onResume都没有被调用...仅供记录,我有一个SplashActivity显示图像,然后调用startActivity。 - Alin
已在此处添加问题;http://stackoverflow.com/questions/26341067/activity-not-being-started-from-launcher-when-using-singetintance - Alin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接