从最近的列表中清除应用程序时,是否可以从共享首选项中清除数据。

时间:2018-02-22 06:11:21

标签: android sharedpreferences

从最近列表中清除应用时,我必须清除SharedPreference中的数据。

有没有办法呢?

5 个答案:

答案 0 :(得分:2)

Which activity is called when app removed from recent list in android?

以上链接告诉您如何从最近列表中删除应用程序时输入回调方法。然后,您可以在该函数中更新共享变量。

答案 1 :(得分:1)

我不这么认为,当应用程序从后台清除时,大多数时候都不会调用onDestroy()方法。因此,应用程序没有获得任何回调方法。      如果你想这样做,那么为什么不在应用程序类中使用一些静态变量或对象(如果可能的话),具体取决于要求。每次应用程序启动时,它们都会重新初始化,如果可以帮助您,可能会重新初始化。

答案 2 :(得分:0)

enter image description here

当从最近的列表中清除应用程序时,将调用onDestroy()方法。在调用onDestroy()方法时清除SharedPreference值。

    @Override
    protected void onDestroy() {
        super.onDestroy();

        SharedPreferences.Editor editor = getSharedPreferences("APP", MODE_PRIVATE).edit();
        editor.putString("YOUR_DATA_KEY", "").apply(); //data nullified
    }

在下面的android中查看活动的生命周期:

Lifecycle of an activity in android

答案 3 :(得分:0)

你可以使用服务来做到这一点。

创建粘性服务:

并覆盖onTaskRemoved功能以清除您的共享偏好设置。

public class CheckAppRemovedService extends Service {

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

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

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);
        //YOUR CODE TO CLEAR SHARED PREFS.
    }
}

开始活动时启动服务。

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

答案 4 :(得分:0)

如前所述,无论您尝试使用何种回叫,都无法保证在您的应用被杀时您会收到回叫。但是,我仍然想知道为什么你要使用SharedPreferences如果你不希望这些数据是持久的,那么它就是这个类的重点。话虽如此,您应该像应用程序中的任何其他数据一样处理数据。

如果由于某种原因需要使用SharedPreferences,那么清除它的正确方法是启动应用程序时,而不是杀死它时。这样,你就不会有任何问题。