覆盖 Android 中的 Activity/Task 行为

Posted

技术标签:

【中文标题】覆盖 Android 中的 Activity/Task 行为【英文标题】:Overriding the Activity/Task behavior in Android 【发布时间】:2010-12-16 15:42:37 【问题描述】:

我正在编写一个简单的 android 应用,我希望更好地控制活动之间的导航/关系。我不希望我的活动表现得像 android 活动......我不希望它们在任务中堆积。我想要一个Activity(我们称之为MainActivity)作为着陆点并且始终位于堆栈的底部,并且我只想要我的第二个活动的一个实例(称之为 SecondActivity) 在堆栈中位于它的上方......也可以重用它。我想我可以通过使 MainActivity 成为“主要”Activity 来获得这种行为,并将它们都声明为launchMode=singleTop。这根本行不通。我使用菜单在它们之间提供导航,所以当我来回多次并退出应用程序时,我会浏览整个堆栈。

如何更好地控制任务的Activity 堆栈?我希望 MainActivity 始终退出应用程序,并且 SecondActivity 始终返回到 MainActivity 的单个实例。同样,我很想让 singleTop 工作,所以我会使用 onNewIntent 而不是每次都创建和销毁。使用清单以及意图标志是行不通的。有什么想法吗?

【问题讨论】:

【参考方案1】:

好吧,您总是可以在“startActivity()”调用之后调用另一个 Activity 的任何 Activity 中调用“finish()”。我绝对建议不要尝试将整个应用程序填充到两个活动类中,并尝试根据他们正在做的事情交换视图。如果它对您很重要,只需在启动新 Activity 时关闭您的 Activity(但显然不是 MainActivity)。

【讨论】:

这不是将整个应用程序塞进两个活动的问题,因为它是一个相对简单的应用程序,实际上只有两个不同的视图,其中一个只是一个登录页面。而且,我希望得到 singleTop launchMode 所宣传的重用。我不知道在 Android 中构建一个 Activity 类需要花费多少,但我知道在其他平台上我更喜欢重用单例实例,而不是一遍又一遍地构造和破坏相同的东西 我将其描述为过早的优化。 Android Market 上有 10,000 多个应用程序。绝大多数人会在需要时简单地启动新活动,并在用户退出时让这些活动关闭。毕竟,Android 背后的内存管理系统采用该模型,核心 Android 开发团队推广该模型等等。请记住:默认情况下,您的活动会在方向更改时被销毁并重新创建。

以上是关于覆盖 Android 中的 Activity/Task 行为的主要内容,如果未能解决你的问题,请参考以下文章

覆盖Android中的电源按钮

如何覆盖android中的操作栏后退按钮?

如何覆盖 Android 应用程序中的配置?

Android Studio 中的 Jacoco 代码覆盖率

Android中的状态栏覆盖操作栏

无法在Android中的Dialog类中添加一些覆盖方法