适用于应用生命周期的Android事件监听器

我正在编写一个Android代码段来帮助跟踪Android事件作为应用程序开发人员的服务工具。

例如,主应用程序主体可以只是显示“你好世界”。 我的代码将监听应用程序事件,如onStart()onResume()onDestroy()等,并跟踪这些事件。

当然,代码可以直接插入到主要活动中。 但是这意味着我的代码会遍布所有的地方。 有没有办法,我可以创build一个对象(即一个监听器),只请求应用开发者添加1〜2个class轮来使用我的代码?

Solutions Collecting From Web of "适用于应用生命周期的Android事件监听器"

对于API Level 14及更高版本,您可以调用Application上的registerActivityLifecycleCallbacks()来设置侦听器,以通知活动生命周期事件。

尝试这种方法

 public class mYApplication extends Application { @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new MyLifecycleHandler()); } } 

MyLifecycleHandler:

 public class MyLifecycleHandler implements Application.ActivityLifecycleCallbacks { private static int resumed; private static int paused; private static int started; private static int stopped; @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityDestroyed(Activity activity) { } @Override public void onActivityResumed(Activity activity) { ++resumed; } @Override public void onActivityPaused(Activity activity) { ++paused; android.util.Log.w("test", "application is in foreground: " + (resumed > paused)); } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityStarted(Activity activity) { ++started; } @Override public void onActivityStopped(Activity activity) { ++stopped; android.util.Log.w("test", "application is visible: " + (started > stopped)); } public static boolean isApplicationVisible() { return started > stopped; } public static boolean isApplicationInForeground() { return resumed > paused; } } 

然后调用isApplicationInForeground静态方法来检查应用程序是处于前景还是后台