如果满足某个条件,我正在调用finish()
。但是,即使在finish()
之后,如果我按住主页按钮,我仍然可以在那里看到我的应用程序。如果杀死这个过程不是一个理想的选择,我该怎么办?
这是我打电话给finish()
的地方:
protected void onStart() {
.............
if(today.equals("..."))
finish();
};
我知道完成将完成活动,但为什么它仍然可以在任务管理器中看到?我已经完成了。
答案 0 :(得分:9)
按住(并按住)HOME按钮不会打开任务管理器。这是某种“最近的应用”部分,它显示了您最近打开的应用。实际上它比这更聪明 - 它可以恢复上次访问的活动,但由于你只有一个活动,这对你来说不是很重要
所以基本上即使你可以在这个列表中看到你的应用程序,但这并不意味着它实际上正在运行。
答案 1 :(得分:9)
finishAndRemoveTask()是根据文档提供的新API “完成此任务中的所有活动,并将其从最近的任务列表中删除。”
isWeekend : () => boolean;
答案 2 :(得分:5)
finish()告诉android系统你已经完成了。由android系统决定何时实际杀死你的应用程序。只要操作系统不需要资源,它就会保留您的应用程序。对于操作系统,将应用程序保留在RAM中比重新启动应用程序要便宜。这种策略适用于大多数现代操作系统。
答案 3 :(得分:5)
如果杀死这个过程不是一个理想的选择,我该怎么办?
没什么,很可能。
我知道完成将完成活动,但为什么它仍然可以在任务管理器中看到?
首先,您的流程仍在运行。这是一项优化,因此,如果用户选择立即返回您的应用,或其他东西触发您的应用代码(例如AlarmManager
),Android就不必浪费CPU和电池为您提供另一个流程远。 Android会在认为合适时终止您的流程。
请注意,根据您认为的“任务管理器”,您的应用可能会出现在那里,即使您的流程已终止。例如,长按HOME或按RECENTS按钮会显示“最近的任务”,其中包括已终止该过程的任务。
在应用程序任务管理器
中显示应用程序中的进度条并不是真正专业
我不知道为什么你会这么想。话虽如此,欢迎您override onCreateThumbnail()
in your activities返回其他用于缩略图的内容。
答案 4 :(得分:1)
进程保持在S
已使用状态:
PID USER VSZ STAT COMMAND
--- ---- --- ---- -------
5846 root 0 SW< [ksdioirqd/mmc1]
5853 u0_a76 306m S {android.youtube} com.google.android.youtube
5897 root 1852 S /sbin/sh -
5922 u0_a79 286m S {om.me.mygdxgame} com.me.mygdxgame
5947 u0_a49 278m S {roid.dspmanager} com.bel.android.dspmanager
5965 root 1844 R ps -w
即使所有活动都已关闭。
当有足够的空间时,将内容保存在RAM中是没有害处的。易失性RAM IC消耗功率,空载或满载。暂停的进程不会占用CPU。当需要空间时,将终止这些过程。在此之前,它们可以快速恢复,并使操作系统更快。
您需要查找正在运行的进程的情况是:
Runtime.exec()
运行,忘记在其上调用destroy()
。如果您只是处理简单的Android组件并正确实现了它们的生命周期。您永远不必担心内部流程。