Android中如何处理后台崩溃-创新互联
                                            本篇内容主要讲解“Android中如何处理后台崩溃”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中如何处理后台崩溃”吧!

原理其实蛮简单的。
- 检测是否为后台 
- 如果是后台则杀掉该进程,否则执行默认的崩溃处理 
检测是否为后台,这里我们以进程中Activity的数量作为判断标准
- 当activity onStart时activityCount自增 
- 当Activity onStop时activityCount自减 
- 当activityCount为0,我们则认为应用处于后台状态 
具体实现如下:
object ActivityLifecycleCallbackImp: Application.ActivityLifecycleCallbacks {    var activityCount: Int = 0    override fun onActivityPaused(activity: Activity?) {    }     override fun onActivityResumed(activity: Activity?) {    }     override fun onActivityStarted(activity: Activity?) {        activityCount ++    }     override fun onActivityDestroyed(activity: Activity?) {    }     override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {    }     override fun onActivityStopped(activity: Activity?) {        activityCount--    }     override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {    } }在Application中进行注册:
class MyApplication : Application() {    override fun onCreate() {        super.onCreate()        registerActivityLifecycleCallbacks(ActivityLifecycleCallbackImp)    } }剩下的就是设置一个自定义的未捕获异常处理处理器:
val defaultHandler = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { thread, exception ->    exception.printStackTrace()    val isBackground = ActivityLifecycleCallbackImp.activityCount == 0    if (isBackground) {        Log.d("MyApplication", "isBackground just kill the process without annoying users")        android.os.Process.killProcess(android.os.Process.myPid())    } else {        defaultHandler.uncaughtException(thread, exception)    } }到此,相信大家对“Android中如何处理后台崩溃”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
名称栏目:Android中如何处理后台崩溃-创新互联
本文URL:http://www.jxjierui.cn/article/jsioc.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 