为什么我的应用程序在完成后仍可在任务管理器中看到

ARM*_*DON 5 android

finish()如果满足某个条件,我正在打电话.然而,即使finish()我拿着主页按钮,我仍然可以在那里看到我的应用程序.如果杀死这个过程不是一个理想的选择,我该怎么办?

这是我打电话的地方finish():

    protected void onStart() {
.............
if(today.equals("..."))
finish();

    };
Run Code Online (Sandbox Code Playgroud)

我知道完成将完成活动,但为什么它仍然可以在任务管理器中看到?我已经完成了.

Var*_*tia 10

finishAndRemoveTask()是根据文档"完成此任务中的所有活动并将其从最近的任务列表中删除"的新API.

if(android.os.Build.VERSION.SDK_INT >= 21)
{
    finishAndRemoveTask();
}
else
{
    finish();
}
Run Code Online (Sandbox Code Playgroud)


Pav*_*dka 9

按住(并按住)HOME按钮不会打开任务管理器.这是某种"最近的应用"部分,它显示了您最近打开的应用.实际上它比那更聪明 - 它可以恢复上次访问的活动,但由于你只有一个活动,这对你来说不是很重要

所以基本上即使你可以在这个列表中看到你的应用程序,也不意味着它实际上正在运行.


Sri*_*hay 5

finish()告诉android系统你已经完成了.由android系统决定何时实际杀死你的应用程序.只要操作系统不需要资源,它就会保留您的应用程序.对于操作系统,将应用程序保留在RAM中比重新启动应用程序要便宜.这种策略适用于大多数现代操作系统.


Com*_*are 5

如果杀死这个过程不是一个理想的选择,我该怎么办?

没什么,最有可能的.

我知道完成将完成活动,但为什么它仍然可以在任务管理器中看到?

首先,您的流程仍在运行.这是一种优化,因此如果用户选择立即返回您的应用程序,或其他东西触发您的应用程序代码(例如AlarmManager),Android就不必浪费CPU和电池立即为您提供另一个流程.Android会在认为合适时终止您的流程.

请注意,根据您认为的"任务管理器",您的应用程序可能会出现在那里,即使您的流程已终止.例如,长按HOME或按RECENTS按钮会显示"最近的任务",其中包括已终止该过程的任务.

它就像不是真正专业地在应用程序任务管理器中显示应用程序中的进度条

我不知道为什么你会这么想.话虽如此,欢迎您在您的活动中覆盖onCreateThumbnail()以返回用于缩略图的其他内容.