This top part is outdated. See bottom for answer.
I'm assuming you're referring to Activities within your own application:
All Activities call onResume()
when coming to the foreground and onPause()
when leaving the foreground. Simply override this method with your functionality (be sure to call super.onResume()
and super.onPause()
respectively!).
As for the identifier, perhaps you could make your Service have a static method that is called by an Activity coming to the foreground (in onResume()
), supplying a reference to itself, its class, some arbitrary ID, etc.
Reference: http://developer.android.com/reference/android/app/Activity.html
Edit:
You can access the top Activity's identity via ActivityManager
-> running tasks -> ComponentName
. Be sure to declare <uses-permission android:name="android.permission.GET_TASKS" />
in your manifest.
Context context = someArbitraryContext;
ActivityManager am = (ActivityManager) context.
getSystemService(Activity.ACTIVITY_SERVICE);
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();
String className = am.getRunningTasks(1).get(0).topActivity.getClassName();
As for getting a notification, you'll probably have to just check the top Activity every x milliseconds.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…