問題:定時器界面A 定時提醒界面B
A正在運行,按HOME鍵被切換到後臺,這時時間到了,應該啓動B界面,這時在桌面再次點擊定時器圖標,則B界面再也不出現。
從log中,發現啓動B界面的請求被忽略了
06-22 17:31:21.897 I/ActivityManager( 664): START u0 {flg=0x10000000 cmp=com.mobvoi.ticwear.timer/.ui.TimerUpActivity (has extras)} from uid 10020 on display 0
06-22 17:31:21.897 W/ActivityManager( 664): Activity start request from 10020 stopped
Android代碼:frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java startActivityLocked函數
解釋:
- root 你的手機;
- 在 AndroidManifest.xml 中添加 "android.permission.STOP_APP_SWITCHES" 用戶權限;
- 將你開發的應用程序 push 到手機的 /system/app 目錄中。
我又做了個實驗,
1) 在MainActivity onStop的時候,啓動2s的定時器,啓動Activity2.
結論:從onStop到Activity2展現,需要5s
06-23 10:22:35.298 D/MainActivity( 9769): onStop
06-23 10:22:37.308 E/MainActivity( 9769): thread time up
06-23 10:22:37.308 I/ActivityManager( 1073): START u0 {cmp=com.example.myapplication/.Activity2} from uid 10141 on display 0
06-23 10:22:37.308 W/ActivityManager( 1073): resultRecord is null: true
06-23 10:22:37.308 W/ActivityManager( 1073): Activity start request from 10141 stopped
06-23 10:22:39.888 D/Activity2( 9769): onCreate
2) 在MainActivity onStop的時候,啓動7s的定時器,啓動Activity2.
結論:從onStop到Activity2展現,需要7s
06-23 10:31:35.018 D/MainActivity(21082): onStop
06-23 10:31:42.048 E/MainActivity(21082): thread time up
06-23 10:31:42.048 I/ActivityManager( 1073): START u0 {cmp=com.example.myapplication/.Activity2} from uid 10141 on display 0
06-23 10:31:42.208 D/Activity2(21082): onCreate