注册 Android Activity 生命周期未被触发

Boa*_*rdy 1 android activity-lifecycle

我正在开发一个 Android 应用程序,我正在尝试注册活动生命周期回调。

在我的启动器活动 (Agreement.java) 中,onCreate我有以下内容:

this.getApplication().registerActivityLifecycleCallbacks(new LoginManager());
Run Code Online (Sandbox Code Playgroud)

此活动会检查协议是否已达成一致,如果同意,则立即完成并调用 LoginActivity.java 但我在活动回调类中的 toast 通知没有显示,我的 logcat 消息也没有显示,因此它看起来并不像就像它被解雇一样。

下面是实现活动回调的 LoginManager 类

public class LoginManager extends Application implements Application.ActivityLifecycleCallbacks
{
    private final String TAG = "LoginManager";
    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState)
    {
        Toast.makeText(activity, "Activity Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "Activity Created");
        long currentEpochTime = System.currentTimeMillis() / 1000l;
        Log.d(TAG, "Current Epoch: " + currentEpochTime);
        CommonTasks commonTasks = new CommonTasks(activity);
        SharedPreferences settings = commonTasks.getAppsSharedPreferences();

        long timeDifference = currentEpochTime - settings.getLong(Defines.SharedPreferenceSettings.LAST_ACTIVE_EPOCH, 0);
        Log.d(TAG, "Time Difference: " + timeDifference);
        if (timeDifference >= 120) //2 Minutes
        {
            Log.d(TAG, "Logging out");
            //Over 2 minutes so we need to logout
            Intent intent = new Intent(activity, LoginActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            activity.startActivity(intent);
        }
        else
        {
            Log.d(TAG, "Not Logging Out");
            //No need to logout, save the current time
            SharedPreferences.Editor editor = settings.edit();
            editor.putLong(Defines.SharedPreferenceSettings.LAST_ACTIVE_EPOCH, currentEpochTime);
            editor.commit();
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以重申一下,协议类注册生命周期回调(LoginManager)会立即关闭并显示 LoginActivity,但不会触发 toast 和 logcat。

Sha*_*ari 5

在您的LoginManager班级中添加

 @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(this);
    }
Run Code Online (Sandbox Code Playgroud)

并删除

this.getApplication().registerActivityLifecycleCallbacks(new LoginManager());
Run Code Online (Sandbox Code Playgroud)

Agreement.java