【发布时间】:2021-03-30 04:14:53
【问题描述】:
我正在尝试以编程方式退出我的应用程序,因此我调用了这些行:
my_activity.finishAndRemoveTask();
context.stopService(new Intent(context, mysvc.class));
应用程序似乎正在关闭:
com.my.package I/my_activity: onDestroy
I/mysvc: onDestroy
所以活动和服务似乎都被破坏了。
但是,当我签入Settings/Apps/App info 时,我的应用程序似乎仍然“可强制停止”(即强制停止按钮仍然处于活动状态)。
当我按下这个“强制停止”按钮时:
D/AppInfoDashboard: Stopping package com.my.package
I/ActivityManager: Force stopping com.my.package appid=xy, user=xy: from pid xy
I/ActivityManager: Killing xy:com.my.package/xy (adj xy): stop com.my.package
D/AppActionButtonControl: Sending broadcast to query restart status for com.my.package
D/AppActionButtonControl: Sending broadcast to query restart status for com.my.package
D/AppActionButtonControl: Got broadcast response: Restart status for com.my.package false
D/AppActionButtonControl: Got broadcast response: Restart status for com.my.package false
按下此按钮后,它会变为非活动状态,我相信我的 com.my.package 应用程序已成功(并完全)终止。
所以我的问题是,如果我上面的代码行没有做到这一点,我该如何以编程方式实现这一点?还有:如果 Android 明确要求退出,为什么它会让我的应用程序处于某种准运行状态?
请注意,我不想在退出时终止我的应用程序。当用户从菜单中选择“退出”选项时,我想优雅地终止它。
【问题讨论】:
-
您当前所做的将是优雅地终止您的应用程序(停止任何服务并完成您的活动)。 Android 会将您的应用程序在内存中保留一段时间,以便用户再次打开它时它可以更快地启动。
-
简短回答:你不能在 Android 中杀死自己的应用程序,操作系统负责进程的生命周期管理。