Android重启App

Android重启App

  • 前言

自动重启App,这个需求会在很多地方用到,举两个例子:登录过期后、退出登录。想必大家百度过也有一定的处理方案,但是这些方案不是太复杂就是无效,还有就是cv选手,百度的东西真需要自己好好斟酌一下。避免大家踩坑也方便自己回顾,这里记录一下。

  • 解决方案

Kotlin语法:

context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
     // 下面这个Flag至关重要,会清空栈里所有的Activity
     addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
     context.startActivity(this)
}
// 结束进程
Process.killProcess(Process.myPid())
  • 缺陷分析

如果该App以startService()的方式开启了一个或多个Service,调用上述代码重启后会造成Service也重启。需要在结束进程前stop所有已开启的Service,比较麻烦。如果需要让Service绑定Application的生命周期,这里推荐的写法是context.bindService(),这个context是Application的上下文,解绑的时候需要注意一下connection的引用。原理我这就不展开说了,大家百度一下吧。

如果大家有什么更好的解决方案,欢迎下面留言。


版权声明:本文为baidu_35559769原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。