我有一个包含两个活动的应用程序,我们将它们称为A和B。A是初始活动,B是第二个活动。一旦启动B,我不希望活动在应用程序停止运行之前被销毁,因为B建立了外部网络连接。

我要的是人们进入A点的活动,按小部件,并转到B,即A - > B,如果他们按B上的后退按钮,我不希望B销毁。我不在乎是否重新创建A,尽管默认情况下不是。现在的当前活动是A,如果人们按下小部件转到B,我希望他们通过开放的网络连接重新输入现有的B活动。如果他们再按一次,我希望他们去A活动。现在在A中,如果他们按回车,则我希望关闭应用程序中的所有活动。

就在B中创建onBackPressed()方法而言,我已经了解到了这一点(以便在转到A时不会破坏B活动)。另外,将意图标志“ FLAG_ACTIVITY_REORDER_TO_FRONT”添加到调用B的A中的意图中,可以防止在我第二次从A调用B时重新创建B,尽管这可能不是最佳方法。

重申我的工作:


在活动A中输入应用程序。
在A中按窗口小部件以打开活动B。
在B中按返回按钮以打开活动A。这不应关闭B,而应将其放在堆栈上。
再次在A中。我按B的小部件。这将打开现有的B活动。
现在在B中,我按返回到A。
向后按A退出应用程序。


程序流程为[主屏幕]->活动A->活动B。后退键将使该流程反向。

最佳答案

每当活动离开屏幕时,就无法保证不会被操作系统杀死。这意味着两件事。任何可视状态要持续,您必须跟踪自己。您可以使用onSaveInstanceState做到这一点,在onRestoreInstanceState

您提到要打开可能熄灭屏幕的活动的网络连接。您应该真正考虑在Service中执行此操作。除非它们被设计成工作戏外服务非常类似的活动。他们是伟大的做一些事情,这并不需要用户交互。

关于始终在两个活动之间进行后退按钮切换,您可以通过拦截活动中的后退按钮按下,然后进行应用程序切换活动来实现。但是请记住,后退按钮在android上具有非常特定的功能,并且用户习惯了以某种方式运行的应用程序。尽量不要做任何事情,在Android UX公约背道而驰。就个人而言,当应用违反常规(例如使用“后退”按钮退出活动并返回主屏幕)时,我感到很沮丧。

07-24 09:47
查看更多