繁体   English   中英

在Android中维护标准应用程序活动后备堆栈状态(使用singleTask启动模式)

[英]Maintaining standard application Activity back stack state in Android (using singleTask launch mode)

我无法找到如何在开发中维护我的Android应用程序的状态。

只是为了澄清,我不是在谈论维护活动状态(即跟踪特定活动的文本框值,复选框等)。

比方说,我的应用程序有两个活动AB 当我启动我的应用程序时,它需要我进行活动A ,按下它上面的按钮将我带到活动B 此时,我按下手机上的主页按钮返回主Android UI并退出我的应用程序。 但是,如果我选择再次运行我的应用程序,它应该带我去活动B ,这是我在按下主页按钮之前离开的地方,但它转而带我去活动A

有谁知道我怎么能纠正这个?

(如果你需要知道,我正在使用三星Vibrant)

“但是,如果我选择再次运行我的应用程序,它应该带我去活动B,这是我在按下主页按钮之前离开的地方,但是它将我带到活动A.”

是的,它应该。 如果不是,您已在应用中做了一些事情来告诉平台修改其行为。 (以ApiDemos为例,它使用标准行为,这听起来就像你所描述的那样。)

需要注意的事项:

  • 启动活动时不要使用FLAG_ACTIVITY_NEW_TASK。
  • 不要使用singleTask或singleInstance启动模式。
  • 看不到clearTaskOnReset标志。

你在想象有一种叫做“应用程序”的东西,但那是一种错觉。 您的应用程序只是活动,服务,接收器等的集合。

如果您查看清单中的intent-filter标记,您会看到主屏幕中的每个图标都与这样的过滤器相关联:

     <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>

您可以在两个活动上放置相同的XML块,并且您将在主屏幕中获得两个图标,一个始终启动活动A,另一个始终启动活动B.

您可能想要做的是创建一个主活动,该活动根据共享状态启动其他活动之一。

至于实际存储共享状态的位置,这取决于您的状态有多复杂。 这是一个很好的起点: http//developer.android.com/guide/topics/data/data-storage.html

据我所知,您想要启动应用程序的问题,每次都会发生不同的事情,具体取决于您上次离开的位置。 http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html活动生命周期在链接中。 你的onActivityDestroyed方法需要以某种方式持久保存当前状态,而oncreate需要将其恢复。 持久性可以通过共享首选项实现,存储在文件,数据库或网络上http://developer.android.com/guide/topics/data/data-storage.html这种不可预测的行为可能会导致最终用户混淆执行不力,所以要善意判断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM