我有一個android服務。我想在用戶更改應用程序時執行一些任務。有沒有廣播或事件,我可以聽。Android:檢測活動/應用程序更改事件
如果民意調查是唯一的解決方案,任何人都可以提出一些很好的民意測驗技巧。
謝謝。
我有一個android服務。我想在用戶更改應用程序時執行一些任務。有沒有廣播或事件,我可以聽。Android:檢測活動/應用程序更改事件
如果民意調查是唯一的解決方案,任何人都可以提出一些很好的民意測驗技巧。
謝謝。
您可以通過查詢頂級活動區分應用:
private String lastPackageName;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
Log.d("topActivity", "CURRENT Activity ::"
+ taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
String packageName = componentInfo.getPackageName();
if(lastPackageName != packageName){
//Probably application changed
}
lastPackageName = packageName;
但這將是由你你多久輪詢的信息。你可以嘗試輪詢此信息每當用戶按下回,家庭按鈕或屏幕上的按鈕..但它顯然是太多和不好的輪詢技術。
好像這個問題已經被不問過,並沒有得到足夠的答案: How to be notified when foreground (top) activity (application) changes
「每次用戶按下後,您可以嘗試查詢此信息,家庭按鈕或按下屏幕上的內容」 - 服務無法檢測到任何這些信息的東西。 – CommonsWare
請在Android Developers站點檢查Notifications document。您可以在Internet連接更改期間或設備重新啓動期間或設備關閉期間顯示通知。
你應該打開這個問題的賞金。我的回答顯然不是一個值得接受的答案,我也很好奇可能的解決方案 –