相关疑难解决方法(0)

启动活动后立即调用OnPause和OnStop()

我有一项活动需要在启动时打开屏幕(如果是关闭).所以在onCreate中,我有:

this.getWindow().setFlags(
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

在广播接收器的wakelock的帮助下使用它,我能够在广播接收器启动时显示我的活动.

但问题很奇怪,活动生命周期以这种方式调用,onPause()和onResume在启动活动后立即调用

  1. 的onCreate
  2. 在onStart
  3. 的onResume
  4. 在onPause
  5. 的onStop
  6. 在onStart
  7. 的onResume

所以问题出在启动和恢复调用两次,在停止也调用,我想在onStop()中实现一些逻辑,但是,这样的行为应用程序将无法正常工作.

编辑

我发现问题只是由于标志FLAG_SHOW_WHEN_LOCKED.当设备被锁定时 它只会在活动开始前锁定设备时发生.

PS我正在使用带有广播接收器的报警管理器,然后从广播接收器开始活动.

android activity-lifecycle wakelock android-activity

43
推荐指数
1
解决办法
1万
查看次数

活动生命周期X电源按钮X锁定屏幕

当我按下电源键时,屏幕关闭(完全黑暗),系统会破坏我的活动,然后重新创建它:

03-28 22:48:00.934: V/[BB](5809): [GameControl] onPause
03-28 22:48:01.444: V/[BB](5809): [GameControl] onDestroy
03-28 22:48:01.724: V/[BB](5809): [GameControl] onCreate
03-28 22:48:03.016: V/[BB](5809): [GameControl] onResume
03-28 22:48:03.016: V/[BB](5809): [GameControl] onPause
Run Code Online (Sandbox Code Playgroud)

这是因为我的活动具有固定方向(横向)并且锁定屏幕是纵向.

我通过设置固定的纵向方向测试了这个理论,但问题没有发生.我还检查了getResources().getConfiguration()值:

{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=36}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=1 layout=17 uiMode=17 seq=37}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=38}
Run Code Online (Sandbox Code Playgroud)

怎么可以避免呢?我不希望锁定屏幕破坏我的活动!

android android-lifecycle

15
推荐指数
1
解决办法
5833
查看次数