ActivityManagerを使用すると、現在のタスクとそのスタックをチェックすることができます。だから、
、活動が最後のものであるかどうかを判断するために:
要求マニフェストでandroid.permission.GET_TASKS権限を。上記のコードは、あなたが単一のタスクを持っている場合にのみ有効になることを
ActivityManager mngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);
if(taskList.get(0).numActivities == 1 &&
taskList.get(0).topActivity.getClassName().equals(this.getClass().getName())) {
Log.i(TAG, "This is last activity in the stack");
}
:
は、次のコードを使用してください。あなたのアプリケーションに多数のタスクが存在する可能性がある場合 - 他のtaskList要素をチェックする必要があります。タスクのタスクについての詳細を読み、バックスタック
そして、第二の溶液は
public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName()))
return true;
}
return false;
}
あるだけ – pskink
@pskinkそれにバインドされたすべてのクライアントがある場合は、「バウンドローカルサービス」のパターンとあなたのサービスを知っているだろう使用するので、私が必要サービス(通常のもの)のインスタンスを作成し、それにチャットアクティビティをバインドしますか? GcmListenerServiceにバインドすることはできません。 –
'GcmListenerService'は' service'を拡張して、その上で 'bindService'を呼び出すことができます。 – pskink