我正在从服务中启动一项活动。我在服务启动之前获取部分唤醒锁。
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
lockStatic=mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOCK_NAME_STATIC);
lockStatic.setReferenceCounted(true);
我从这样的服务开始活动:
Intent intent = new Intent(mContext, NotificationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在我的Activity类中,我在屏幕锁定时添加标记来显示活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
/*Code to open a Dialog*/
}
当我调试所有代码工作正常。活动被成功调用。但如果屏幕被锁定(没有安全锁定键盘锁),则手机屏幕不会显示活动。我必须手动解锁手机,然后才能看到正在运行的应用程序列表中的活动。