我的Android应用包含一套迷你应用。简而言之,主屏幕包含几个图标,每个图标用于迷你应用程序。单击图标时,将启动迷你应用程序。 我总共有4个迷你应用程序。所以你可以想象我的主屏幕就像主屏幕启动器。虽然这些迷你应用程序可以独立运行,但我希望用户进行身份验证。因此,在MainActivity之前有一个LoginActivity。
LoginActivity -> MainActivity ---> AppOneActivity
---> AppTwoActivity
---> AppThreeActivity
---> AppFourActivity (aka PresenceListActivity)
我仍然不太确定任务(安排的活动集)的好处,所以我希望Android专家对我的设计决策发表评论: -
(1)我计划将 LoginActivity 的属性 finishOnTaskLaunch 设置为true。据我了解,登录验证后,我会将用户导航到 MainActivity ,我希望 LoginActivity 消失。这比调用Activity上的 #finish 更好吗? MainActivity会在没有任何额外配置/代码的情况下自动成为Task的根目录吗?
(2)迷你应用程序之一是IM客户端。 PresenceListActivity 将托管 ChatActivity 的多个实例(与该列表中的活动联系人进行一对一聊天会话)。我计划使用 ChatActivity 的默认启动模式,因为每个聊天都应由新实例处理。听起来不错?
(3) AppOneActivity , AppTwoActivity 等的顶角会出现一个粘性导航栏。我打算设置 clearTaskOnLaunch 对于所有这些属性,属性为true。根据我的理解,每当我计划启动任何迷你应用程序时,我都应该清除堆栈。他们的 launchModes 也将是 singleTask 。我在正确的道路上吗?
(4)最后我真的不明白如何阅读 adb shell dumpsys活动的输出。例如
Task{10 com.me.rnd.exit}
clearOnBackground=false numActivities=1
affinity=com.me.rnd.exit
lastActiveTime=5513102 (inactive for 5s)
History #1: .....
Task{2 com.android.launcher}
clearOnBackground=true numActivities=1 rootWasReset=true
affinity=com.android.launcher
lastActiveTime=5512949 (inactive for 6s)
Running #0:
有时在任务下方,您会看到历史,而在其他正在运行,这些是什么意思?更奇怪的是,有时我在任务中有两个历史。
答案 0 :(得分:0)
(1)我计划将LoginActivity的属性finishOnTaskLaunch设置为true。据我所知,登录验证后,我会将用户导航到MainActivity,我希望LoginActivity消失。这比在活动上调用#finish更好吗? MainActivity会在没有任何额外配置/代码的情况下自动成为Task的根目录吗?
我建议从一开始就将MainActivity作为根活动。
首先,MainActivity将创建LoginActivity或LoginDialog,并将结果返回给MainActivity。
这样您就不必弄清楚如何将MainActivity从子活动移动到root活动。
但是,如果这会过多地干扰您的代码,请不要考虑我的建议。
干杯,
约瑟夫