2013-07-02 68 views
5

我有一個android服務。我想在用戶更改應用程序時執行一些任務。有沒有廣播或事件,我可以聽。Android:檢測活動/應用程序更改事件

如果民意調查是唯一的解決方案,任何人都可以提出一些很好的民意測驗技巧。

謝謝。

+0

你應該打開這個問題的賞金。我的回答顯然不是一個值得接受的答案,我也很好奇可能的解決方案 –

回答

1

您可以通過查詢頂級活動區分應用:

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

來源:https://stackoverflow.com/a/4753333/1276374

+4

「每次用戶按下後,您可以嘗試查詢此信息,家庭按鈕或按下屏幕上的內容」 - 服務無法檢測到任何這些信息的東西。 – CommonsWare

-2

請在Android Developers站點檢查Notifications document。您可以在Internet連接更改期間或設備重新啓動期間或設備關閉期間顯示通知。

相關問題