3

有几个线程在关键字“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 管理器,同样的故事活动正在重新启动。

4

2 回答 2

3

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

这里没有进行配置更改,这就是为什么onConfigurationChanged()没有被调用。

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

您的应用程序应该能够处理对onStart()onStop()onRestart()和的多次调用onPause()onResume()不会感到困惑。如果没有,你需要解决这个问题。

于 2013-09-02T16:15:49.853 回答
0

Use a handler. During onCreat() send a message to Handler with a delay of say 100 ms. With this time my activity goes paused and resumed again. Now when the message in received by the handler, start the actual functionality. In my case when the message is received, I start the music and in onStop() with out any condition, stop the music.

于 2013-09-05T21:22:58.423 回答