应用程序关闭时执行某些操作

时间:2017-12-16 20:36:12

标签: android exit application-shutdown

当我的应用关闭时,我使用onDestroy()做某事,但当我从菜单关闭我的应用时(通过点击左边的软键,它不起作用)三星Galaxy上的主页按钮)。所以我推断,当我杀死我的应用时,它并没有调用onDestroy()方法。当我以这种方式关闭我的应用程序时,我该怎么办?

3 个答案:

答案 0 :(得分:1)

首先创建此服务类:

 public class ExitService extends Service {


    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        System.out.println("onTaskRemoved called");
        super.onTaskRemoved(rootIntent);
        //do something you want before app closes.
        //stop service
        this.stopSelf();
    }
}

然后,在清单标签中声明您的服务:

<service
            android:enabled="true"
            android:name=".ExitService"
            android:exported="false"
            android:stopWithTask="false" />

现在,只需在应用关闭之前在任何地方启动服务即可。

 Intent intent = new Intent(this, ExitService.class);
        startService(intent);

答案 1 :(得分:0)

听起来您可能会考虑将代码移动到生命周期的onPause()区域。这通常是保存存储数据并准备关闭的首选位置,而onDestory()是关闭打开句柄的更好位置,在强制终止期间系统可能会关闭打开句柄。

答案 2 :(得分:0)

onDestroy()不一定总是被调用。因此,您需要在onStop()onPause()回拨中执行所有任务。