IActivityWatcher
JellyBeanから削除されたようですがActivity
、フォアグラウンドで実行されているものを監視するにはIProcessObserver
、次のように使用できます。
mActivityManagerNative = ActivityManagerNative.getDefault();
if (mActivityManagerNative != null) {
try {
mActivityManagerNative.registerProcessObserver(mProcessObserver);
} catch (RemoteException e) {
Log.e("TAG", "onCreate() RemoteException!");
}
}
private IProcessObserver.Stub mProcessObserver = new IProcessObserver.Stub() {
@Override
public void onForegroundActivitiesChanged(int pid, int uid, boolean foregroundActivities) {
doWhatUWantHere();
}
@Override
public void onImportanceChanged(int pid, int uid, int importance) {
}
@Override
public void onProcessDied(int pid, int uid) {
}
};
PS 次のコード スニペットを使用して、フォアグラウンドで実行されているアクティビティのパッケージ名を取得できます。
private String getForegroundPackage() {
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RecentTaskInfo> taskInfo = am.getRecentTasks(1,
ActivityManager.RECENT_IGNORE_UNAVAILABLE);
return taskInfo.isEmpty()
? null : taskInfo.get(0).baseIntent.getComponent().getPackageName();
}