2016-09-26 91 views
0

我有前臺服務,可以通過單擊通知中的「X」來停止前臺服務。確定在點擊通知時是否顯示應用程序

當前臺服務停止時,應顯示其他活動。

問題是,我不知道該應用程序是否可見或在單擊「X」按鈕時在後臺。當應用程序可見時,應該更改活動。

回答

0

檢查ab你的活動是否在前臺運行?在這裏你去:

public boolean isRunning(Context ctx) { 
    try { 
    ActivityManager am = (ActivityManager) context 
      .getSystemService(Context.ACTIVITY_SERVICE); 
    // The first in the list of RunningTasks is always the foreground 
    // task. 
    RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); 
    String foregroundTaskPackageName = foregroundTaskInfo.topActivity 
      .getPackageName();// get the top fore ground activity 
    PackageManager pm = context.getPackageManager(); 
    PackageInfo foregroundAppPackageInfo = pm.getPackageInfo(
      foregroundTaskPackageName, 0); 

    String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo 
      .loadLabel(pm).toString(); 

    // Log.e("", foregroundTaskAppName +"----------"+ 
    // foregroundTaskPackageName); 
    if (!foregroundTaskAppName.equals("Your App name")) { 
     return true; 
    } 
} catch (Exception e) { 
    Log.e("isAppSentToBackground", "" + e); 
} 
return false; 
} 

對於API等級> = 21

ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
List<ActivityManager.AppTask> tasks = activityManager.getAppTasks(); 

for (ActivityManager.AppTask task : tasks) { 
    Log.d(TAG, "stackId: " + task.getTaskInfo().stackId); 
} 
+0

如果如果活動在我得到2項任務,一個是服務,一個是活動的後臺運行。只有當活動被操作系統殺死時,只有一項任務。 – sativa

+0

@sativa:是的,這裏你必須檢查堆棧中的第一個任務總是在前臺 – Jai

+0

@sativa由於該方法已被棄用,因此該代碼不適用於Andoid API Level> = 21 [API文檔鏈接](https ://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks(int)) – harsh201

1

對於您的問題沒有100%擔保解決方案。

一個最簡單的是跟蹤在全局變量可見的活動:

public void onResume(){ 
    super.onResume(); 
    App.visibleActivity = this; 
} 

public void onPause(){ 
    super.onPause(); 
    App.visibleActivity = null; 
} 

但也有一些重要的事情:

1)不要忘記在的onPause釋放visibleActivity以防止內存泄漏

2)當前onPause和下一個onResume之間存在時間差,當您的應用在技術上處於後臺時

相關問題