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

应用生命周期的Android事件监听器,android,listener,Android,Listener,我正在编写一段Android代码,以帮助跟踪Android事件,并将其作为应用程序开发人员的服务工具 例如,主应用程序主体可以仅显示“hello world”。我的代码将侦听应用程序事件,例如onStart(),onResume(),onDestroy(),等等,并跟踪这些事件 当然,代码可以直接插入到主活动下。但这意味着我的代码将到处都是。有没有办法,我可以创建一个对象(即侦听器),并且只要求应用程序开发人员添加1~2行代码来使用我的代码?对于API级别14及更高的版本,您可以设置一个侦听器来

我正在编写一段Android代码,以帮助跟踪Android事件,并将其作为应用程序开发人员的服务工具

例如,主应用程序主体可以仅显示“hello world”。我的代码将侦听应用程序事件,例如
onStart()
onResume()
onDestroy()
,等等,并跟踪这些事件


当然,代码可以直接插入到主活动下。但这意味着我的代码将到处都是。有没有办法,我可以创建一个对象(即侦听器),并且只要求应用程序开发人员添加1~2行代码来使用我的代码?

对于API级别14及更高的版本,您可以设置一个侦听器来通知活动生命周期事件。

尝试这种方法

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
static方法检查应用程序是在前台还是后台

谢谢。registerActivityLifecycleCallbacks()可能正是我要找的。请参阅此处Cornstalk的答案,了解如何使用它的一个很好的示例。