【问题标题】:Problems with activity lifecycle活动生命周期的问题
【发布时间】:2013-03-22 19:24:45
【问题描述】:

我在开始新活动时遇到了一些问题。在我的应用程序中,我设置了监听意图(屏幕关闭)的广播接收器。当屏幕关闭时,我的应用程序应该开始新的活动(当然在某些条件下。我不是在制作垃圾邮件应用程序)。但有时并非如此。

我已经在清单中声明了该活动“singleTop”,所以我也覆盖了“onNewIntent”方法。(我认为告诉这一点很重要)但事情就是这样。

当手机进入睡眠状态并且满足某些条件时,屏幕上会出现 2 个图标(我的活动)。我使这些图标可点击,如果我点击我的第二​​个图标,我正在完成(finish())当前活动,我正在开始新的 CALL LOG 活动(由 Android 拥有)。当我这样做时,它应该带回以前的活动(具有不同的布局 - 只有一个图标 - 以前与第二个一起显示),但只有当手机进入睡眠状态时才会再次出现。问题是它没有。根据我的 LOGCAT,所有条件都满足,但只有活动没有开始。我的活动生命周期在这里发生了什么?

屏幕关闭接收器代码:

@Override
        public void onReceive(Context context, Intent intent) {
            Log.d("APP", "MAINSERVICE, Screen OFF");


            MissedCallObserver mco = new MissedCallObserver(MainService.this);

        if(!CallListener.isCallActive) {
            Log.d("APP", "MAINSERVICE, INSIDE IF ( call is not active )");

            if(mco.checkMissedCalls() > 0 || mco.checkUnreadSms() > 0) {
                Log.d("APP", "MAINSERVICE, calls calculated. IF entered. Next is starting activity");

            startHandleActivity();
            }
        }
    } // outer if


    } // ScreenOffReceiver




private void startHandleActivity() {


        Intent startH_Activity = new Intent(MainService.this, HandleActivity.class);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(startH_Activity);


    }

【问题讨论】:

  • 将屏幕关闭事件的代码发布到您的接收器中,您可能还需要请求部分唤醒锁定,因为当屏幕关闭时您的设备可能也会进入睡眠状态。
  • 我做了,现在请看:)
  • 您的应用程序是否获取了部分唤醒锁?我可以预见,如果您正在等待屏幕关闭广播,处理器可能会在之后立即休眠,因此不会创建 Activity。
  • "您的应用程序是否获取了部分唤醒锁?"不..所以你认为我应该使用它?奇怪的是它在某些设备上工作,而在某些设备上却不行(真实设备。在 4 上测试。)
  • 绝对你需要一个部分唤醒锁,这就是我猜为什么它有时会工作而不是其他,设备很快就会进入睡眠状态。

标签: java android android-activity activity-lifecycle


【解决方案1】:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wl.acquire();

这将允许在屏幕关闭意图触发后可靠地执行代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多