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的引用。原理我这就不展开说了,大家百度一下吧。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值