调用ActivityManager.clearApplicationUserData()后是否可以重新启动Android App

Hec*_*tor 10 android android-intent

我当前的 Android 应用程序需要调用

 ActivityManager.clearApplicationUserData()
Run Code Online (Sandbox Code Playgroud)

模拟用户清理App存储

哪个工作正常。

调用的一个副作用clearApplicationUserData()是应用程序(可以理解)关闭。

这会给用户带来糟糕的体验。

一旦我调用了 ,我就很难重新启动我的应用程序clearApplicationUserData()

我曾尝试将startActivity,Alarm ManagerPending Intent, Foreground/Background服务一起使用。

什么都行不通。

是否无法重新启动已调用的 Android 应用程序clearApplicationUserData()

Mr.*_*.AF 6

第一个答案:这个答案只适用于有限的情况。它不是一个完整的答案)

public boolean clearApplicationUserData()

描述

返回true如果应用程序成功请求擦除应用程序的数据;false除此以外。

正如参考网站所述,我们在关闭应用程序之前有一个返回者。所以,我们将使用这个返回者来重新启动应用程序。

if(ActivityManager.clearApplicationUserData)
{
     doRestart = true;
}
Run Code Online (Sandbox Code Playgroud)

当 ActivityonDestroy()onStop()被称为重启应用程序。

   @Override
   protected void onDestroy() {
       super.onDestroy();
       if(doRestart){
           Intent intent = new Intent(this, Activity.class);
           this.startActivity(intent);
       }
   }

    @Override
    protected void onStop() {
        super.onStop();
        if(doRestart){
            Intent intent = new Intent(this, Activity.class);
            this.startActivity(intent);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我们把重新启动操作均onDestroy()onStop(),以确保应用程序将再次重新启动。

而且,我认为在操作系统停止活动之前强制停止活动是个好主意。

if(ActivityManager.clearApplicationUserData)
{
     doRestart = true;
     finish(); <= i mean this 
}
Run Code Online (Sandbox Code Playgroud)

这是因为,它确保onDestroy()并且onStop()将被调用。