如何始终从Android上的启动活动开始?

Vic*_*nin 14 android

有三种不同的情况:

1)用户启动应用程序,在其中导航,按下主页并再次单击应用程序图标以再次启动我们的应用程序.

2)用户启动应用程序,在其中导航,按回家,选择最近并单击应用程序以再次启动我们的应用程序.

3)用户启动应用程序,在其中导航,单击应用程序中的某些内容(带有链接的TextView),其中调用另一个应用程序(例如电子邮件)和用户单击后退按钮,这将我们带回到我们的应用程序.

我知道标志"clearTaskOnLaunch"标志,它解决了案例#1.

我知道标志"excludeFromRecents",它解决了案例#2(可能不是最用户友好的解决方案,但它的工作原理).

案例#3怎么样?我现在有一个解决方法.但是,我必须把它放在所有可以导致另一个应用程序的活动上.我想知道,是否有更好的方法来解决它(没有在所有这些活动中处理它).

Ent*_*eco 5

这应该在应用程序级别处理.

对于API级别14,您可以在Application类中注册ActivityLifeCycleCallback

public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)
Run Code Online (Sandbox Code Playgroud)

您可以使用它,在应用程序级别知道哪些活动被销毁,暂停,恢复等等.每当活动暂停,没有创建/恢复新活动时,您应该清除活动堆栈,然后重新启动你的startActivity

如果您将SDK版本<14定位,则应实现自己的方法,以了解创建/恢复和暂停的活动,并在活动暂停时执行相同操作,而不创建/恢复新活动


Chr*_*CVB 0

您可以调用this.finish()onPause()Activity,这样该活动将在这三种情况下关闭。