android - 为什么 Activity 正在重启?如何避免?

标签 android android-activity restart

有几个线程在关键字“Activity restart”上运行。 老实说,在发帖之前我已经尽力了。

在我的应用程序中,后台服务监控传感器(即使屏幕关闭)并启动 Activity 。为了打开屏幕并在锁定屏幕上显示 Activity ,我设置了以下标志

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;

一切都很完美,屏幕打开, Activity 显示在锁屏上。但是 Activity 正在重新启动。我不知道为什么 ? 此 Activity 方向设置为纵向。因此方向配置的更改不应重新启动 Activity 。我找不到重启的原因。还有什么可能是重启的原因?

为了避免重新启动,我还设置了 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>

仍然没有积极的迹象, Activity 重新开始。也永远不会调用 onConfigurationChanged(Configuration newConfig)。

谁能帮我找到重启的原因以及如何避免?

为什么 android:configChanges 被忽略了。

已使用 API 级别 14 和 15 进行测试。

我的主要问题是我在 onStop() 中执行一些操作,这些操作应该只在 Activity 真正停止时而不是在它重新启动时执行。

谢谢。

注意:我还尝试使用唤醒锁和 keygaurd 管理器,同样的情况 Activity 正在重启。

最佳答案

Activity 没有被“重新创建”,它只是被“重新启动”。这是 Activity 生命周期的正常部分。如果由于配置更改而重新创建 Activity ,您还会看到 onDestroy()onCreate() 被再次调用。这显然不是这种情况。

这里没有配置更改,这就是 onConfigurationChanged() 没有被调用的原因。

我认为发生的事情与启动 Activity 时屏幕关闭/锁定这一事实有关。 Activity 已创建并恢复,但随后 Android 注意到屏幕已关闭/锁定,因此它暂停了 Activity。然后它意识到应该显示 Activity ,所以它恢复 Activity 。我现在无法准确测试这种情况,但我确信当我们在屏幕关闭时启动 Activity 时,我已经在我自己的应用程序中看到过类似的行为。

您的应用应该能够处理对 onStart()onStop()onRestart() 的多次调用onPause()onResume() 不会混淆。如果不是,您需要修复它。

关于android - 为什么 Activity 正在重启?如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474931/

相关文章:

android - 我如何让 mixlr 广播流在 Android 应用程序中播放?

java - 如何将变量从 for(或 while)循环发送到另一个 Activity

inno-setup - 我如何知道 InnoSetup 脚本中是否需要重新启动?

android - 重定向到 Intent Activity 时出现问题

c# - 闲置 2 分钟后重新启动游戏

go - 重启单元文件时的模式和 channel 应该是什么

android - 交错网格布局管理器动态列数

android - 单击小部件时如何呈现 toast ?

android - 我如何通过代码锁定设备的方向

android - 来自非 Activity 类的 Intent