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

8
我正在编写一段Android代码,作为应用程序开发人员的服务工具,以帮助跟踪Android事件。例如,主要应用程序体只需显示“hello world”。我的代码将监听应用程序事件,如onStart()onResume()onDestroy()等,并对这些事件进行跟踪。
当然,可以直接将代码插入到主活动下面。但这意味着我的代码将到处存在。有没有一种方法,我可以创建一个对象(即监听器),并仅请求应用程序开发人员添加1~2行代码来使用我的代码?
2个回答

19

1
registerActivityLifecycleCallbacks() 可能是我正在寻找的正确方法。 - Demai Ni
请参考Cornstalk在这里的答案 - https://dev59.com/KHA65IYBdhLWcg3wuhIR#5862048 - 以获取如何使用它的示例。 - ban-geoengineering

7

尝试这种方法

public class mYApplication extends Application {

 @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(new 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 静态方法来检查应用程序是在前台还是后台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接