我有一个服务,onStartCommand()与此类似:
private User user;
@Override
public int onStartCommand(@Nullable final Intent intent,final int flags,final int startId) {
if (user == null) {
user = UserList.getInstance().getSpecialUser();
}
Assert.assertNotNull(user);
//
// Build notification here,SEOmehow based on user object
//
startForeground(42,notification);
return START_STICKY;
}
显然,我希望我的服务在前台运行,并尽可能长时间运行.
这很有效,直到我的应用程序崩溃到其网络类的深处.当发生时,是否显示应用程序崩溃对话框,用户确认它,重新创建整个应用程序,还重新创建服务,但UserList现在为空,因此getSpecialUser()返回null并且Assert再次使用该应用程序. Android在主屏幕中放弃和用户结束.
有没有办法检测崩溃,这将使我能够更优雅地处理这种情况?
最佳答案
在您的应用程序中创建一个uncaughtExceptionHandler
public class MyApplication extends android.app.Application{
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread arg0,Throwable arg1) {
doSomething();
}
});
}
}