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"或者在您的情况下,您可以使用它来释放一些额外的资源。
希望对您有所帮助!
此致!
我在 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"或者在您的情况下,您可以使用它来释放一些额外的资源。
希望对您有所帮助!
此致!