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中如何处理后台崩溃-创新互联
地址分享:https://www.cdcxhl.com/article2/jsioc.html

成都网站建设公司_创新互联,为您提供企业网站制作自适应网站响应式网站动态网站电子商务网站营销

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司