如何在设备关闭前可靠地执行代码?

问题描述 投票:0回答:1

我想在手机关机时在sharedPreferences上存储一些数据。 我有一个用于关闭操作的广播接收器。问题是它有时有效,有时则无效。 有时意图不会到达广播接收器,但有时却会到达。 还有其他方法可以检测到吗?

谢谢

java android kotlin broadcastreceiver
1个回答
0
投票

您可以尝试使用具有 START_STICKY 的服务: 创建一个服务并重写 onTaskRemoved() 方法,该方法在用户从最近任务列表中删除任务时调用。这也可能表明该应用程序即将关闭。

public class ShutdownService extends Service {

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

@Override
public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);
    // Save data to SharedPreferences when the app is removed from recent tasks
    SharedPreferences.Editor editor = getSharedPreferences("YourPrefs", Context.MODE_PRIVATE).edit();
    editor.putString("key", "value");
    editor.apply();
    stopSelf();
}
}
© www.soinside.com 2019 - 2024. All rights reserved.