有几个线程在关键字“Activity restart”上运行。老实说,在发帖之前我已经尽力了。
在我的应用程序中,后台服务监视传感器(即使屏幕关闭)并启动活动。为了打开屏幕并在锁定屏幕上显示活动,我设置了以下标志
int flags = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.flags |= flags;
一切都很完美,屏幕打开,锁屏上显示活动。但是活动正在重新启动。我不知道为什么 ?此活动方向设置为纵向。因此方向配置的更改不应重新启动活动。我找不到重启的原因。还有什么可能是重启的原因?
为了避免重新启动,我还设置了 android:configChanges (以找到我包含所有可能的配置更改的原因
<activity android:label="@string/tstActivity_label"
android:name=".TstActivity"
android:screenOrientation="portrait"
android:noHistory="true"
android:excludeFromRecents="true"
android:configChanges="locale|keyboard|keyboardHidden|
navigation|orientation|screenLayout|
screenSize|smallestScreenSize|layoutDirection" >
</activity>
仍然没有积极的迹象,活动重新开始。也永远不会调用 onConfigurationChanged(Configuration newConfig) 。
有人可以帮我找到重启的原因以及如何避免它吗?
为什么 android:configChanges 被忽略。
使用 API 级别 14 和 15 进行测试。
我的主要问题是我在 onStop() 中执行了一些操作,这些操作应该仅在活动真正停止时而不是在重新启动时执行。
谢谢你。
注意:我也尝试了唤醒锁和 keygaurd 管理器,同样的故事活动正在重新启动。