天天看點

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

如果大家有什麼更好的解決方案,歡迎下面留言。