放置"Auto Start"另一个活动代码的最佳位置?



我的Android应用程序(应用程序A)在单击按钮后启动另一个应用程序(比如应用程序B)

现在我想实现"自动启动"功能,其中应用程序B将在应用程序A启动后立即启动。为此,我创建了一个复选框,并使用SharedPreferences来存储复选框的值。然后,在我的活动A的onCreate()方法中,我从SharedPreferences中检查复选框的值,并在值为"true"的情况下启动应用程序B。

问题:

我面临的问题是,当用户退出"应用程序B"(并返回应用程序A)时,应用程序A的onCreate()再次被调用,应用程序B再次打开。这会引发一个无限循环,在应用程序B退出时,用户返回到应用程序a并再次转到应用程序B。

我知道onCreate()被调用了多次(当我们改变方向,打开键盘,活动进入后台并被系统杀死时),但有什么干净的方法可以做到这一点吗?

重申一下,如果在应用程序A中选中了"自动启动"复选框,我的要求是从应用程序A启动应用程序B。

我的建议是在应用程序A中使用活动的方法onPause,并在那里设置一个标志"application B was called"。然后,如果设置了此标志,则不要在应用程序A中的活动的onCreate中调用应用程序B并取消设置该标志。

如果应用程序B在前台太长,则系统可能会挂起应用程序A,并重置标志。在这种情况下,最好将标志存储在一些持久存储器(例如SharedPreferences)中。

EDIT还有一件事:只有当活动暂停时,才应在onPause中设置标志,因为将显示另一个应用程序(这很容易确定,因为所有事情都发生在同一个类中)。

最新更新