代码之家  ›  专栏  ›  技术社区  ›  b.s

如何清理资源,以防我的安卓应用程序崩溃或手动杀死?

  •  0
  • b.s  · 技术社区  · 5 年前

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

    3 回复  |  直到 5 年前
        1
  •  1
  •   Firdous nath    5 年前

    对于force kill,我不确定,但在崩溃的情况下,您可以删除以下数据:

    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
            }
        }
    

    在每个活动中创建一个此类的对象并将其设置为 DefaultUncaughtExceptionHandler

    Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this,
                YourCurrentActivity.class));
    
        2
  •  -1
  •   Shubham Agrawal    5 年前

    在最近的酒吧里杀死了应用程序: 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
        }
    }
    

    在每个活动中创建一个此类的对象并将其设置为 DefaultUncaughtExceptionHandler

    Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this,
                YourCurrentActivity.class));
    
        3
  •  -2
  •   Pingolin BenJ    5 年前

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

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