我在开始新活动时遇到一些问题。在我的应用程序中,我设置了广播接收器,它监听意图(屏幕关闭)。当屏幕关闭时,我的应用程序应该开始新的活动(当然在某些条件下。我不会制作垃圾邮件应用程序)。但有时却不是。
我在清单中声明了活动“singleTop”,所以我也覆盖了“onNewIntent”方法。(我认为这很重要)但是这就是事情。
当手机进入睡眠状态并且满足某些条件时,屏幕上会出现2个图标(我的活动)。我使这些图标可以点击,如果我点击我的第二个图标我正在完成(完成())当前活动,我正在开始新的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);
}
答案 0 :(得分:0)
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wl.acquire();
这将允许在Screen Off Intent触发后可靠地执行代码。