您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
这期内容当中小编将会给大家带来有关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中怎么处理后台崩溃了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。