android 应用程序崩溃时处理对象的正确方法是什么?

What is the correct way to dispose of objects when android app crashes?

我在 Android 上使用 libgdx 编写了一个游戏。当我的应用程序崩溃时,我仍然可以听到音乐播放。我想我忘了处理一些东西。 我使用 assetsmanager 来加载我的资源。我在游戏class中调用assetsmanger的dispose函数来处理它。我认为它应该停止音乐并处理它。

我做错了什么?

最初的建议是使用 "onPause"、"onStop"、"onDestroy" 等生命周期方法释放资源,但是,因为在某些特定情况下,例如应用正在崩溃,并且由于任何原因您没有机会释放资源,您可以使用最后一个资源:

public class MyApplication extends Application
{
  public void onCreate ()
  {
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
    {
      @Override
      public void uncaughtException (Thread thread, Throwable e)
      {
        //Do here whatever you want to do when the app crashes
      }
    });
  }
}

"Thread.UncaughtExceptionHandler" 使您有机会在传播异常而未在堆栈的任何级别进行处理时获得回调,因此,它使您有机会执行 "logging the crash to a server"或者在您的情况下,您可以使用它来释放一些额外的资源。

希望对您有所帮助!

此致!