如果我的android应用崩溃或被手动杀死,如何清理资源?

时间:2019-02-06 06:10:57

标签: android

在我的android应用程序中,我必须在应用程序运行期间将数据保存在外部目录中。执行一些操作后,我删除了数据,因此在这种情况下没有问题。但是我希望删除这些数据,以防应用程序崩溃或在所有操作完成之前被用户手动杀死。

3 个答案:

答案 0 :(得分:1)

我不确定要强制执行杀死操作,但是如果发生崩溃,您可以按以下方式删除数据:

创建用于处理unCaughtException

的类
 public class MyExceptionHandler implements
            java.lang.Thread.UncaughtExceptionHandler {
        private final Context myContext;
        private final Class<?> myActivityClass;

        public MyExceptionHandler(Context context, Class<?> c) {

            myContext = context;
            myActivityClass = c;
        }

        public void uncaughtException(Thread thread, Throwable exception) {

            //delete your data
        }
    }

,并在每个Activity中创建此类的Object并将其设置为DefaultUncaughtExceptionHandler

Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this,
            YourCurrentActivity.class));

答案 1 :(得分:-1)

要从最近的酒吧中删除该应用程序: onDestryoy()方法被调用。

public void onDestroy(){ 
  super.onDestroy(); 
  // delete you data here
}

,对于ANR(Application Not Responding)crash,您应该使用:

 public class MyExceptionHandler implements
        java.lang.Thread.UncaughtExceptionHandler {
    private final Context myContext;
    private final Class<?> myActivityClass;

    public MyExceptionHandler(Context context, Class<?> c) {

        myContext = context;
        myActivityClass = c;
    }

    public void uncaughtException(Thread thread, Throwable exception) {

        //delete your data
    }
}

,并在每个Activity中创建此类的Object并将其设置为DefaultUncaughtExceptionHandler

Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this,
            YourCurrentActivity.class));

答案 2 :(得分:-2)

将删除代码放入以下方法中:

public void onDestroy() { super.onDestroy(); }