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

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

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

【问题讨论】:

    标签: android android-activity android-intent application-lifecycle


    【解决方案1】:

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

    【讨论】:

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