ActivityLifecycleCallbacks 不会触发

use*_*885 4 android android-lifecycle android-activity

我正在制作一个消息应用程序,为了设置用户的状态,我必须跟踪我的应用程序的状态。当我运行 apk 时,无论应用程序的状态如何,ActivityLifecycleCallbacks 都不会触发。我已经尝试了迄今为止发现的所有可能的修复方法,但没有一个成功。这是代码:

public class AppState extends Application implements Application.ActivityLifecycleCallbacks {

    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("AppState ", "onCreate");
        registerActivityLifecycleCallbacks(this);
    }

    @Override
    public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
        Log.e("onActivityCreated", activity.getLocalClassName());
    }

    @Override
    public void onActivityStarted(Activity activity) {
        setLastSeen(KEY_LAST_SEEN_ONLINE);
    }

    @Override
    public void onActivityResumed(@NonNull Activity activity) {
        Log.e("onActivityResumed", activity.getLocalClassName());
    }

    @Override
    public void onActivityPaused(@NonNull Activity activity) {
        Log.e("onActivityPaused", activity.getLocalClassName());
    }

    @Override
    public void onActivityStopped(Activity activity) {
        setLastSeen(String.valueOf(System.currentTimeMillis()));
    }

    @Override
    public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {
        Log.e("omInstanceState", activity.getLocalClassName());
    }

    @Override
    public void onActivityDestroyed(@NonNull Activity activity) {
        Log.e("onActivityDestroyed", activity.getLocalClassName());
    }

    private void setLastSeen(String lastSeen) {
        FirebaseDatabase.getInstance().getReference(KEY_COLLECTION_USERS)
                .child(FIREBASE_USER.getUid())
                .child(KEY_LAST_SEEN)
                .setValue(lastSeen);
    }
}
Run Code Online (Sandbox Code Playgroud)

为了澄清起见,我一直在阅读文档和其他一些调整,但它们都没有提到在我的项目的其他类上实现代码,因此我认为问题将出现在此类中。感谢您的时间 :)

i30*_*mb1 5

检查您是否AppState在清单中注册了您的应用程序类:

 <application
        android:name=".AppState"
        ...
Run Code Online (Sandbox Code Playgroud)