0

作为对调用 PowerManager.goToSleep(...) 的响应,我有一个活动有时会被系统破坏。行为不一致,我无法弄清楚原因。

这是我活动的 onCreate 的相关代码,这是代码中最相关的部分:

   protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        requestWindowFeature(android.view.Window.FEATURE_NO_TITLE);

        IntentFilter userprsentfilter = new IntentFilter(Intent.ACTION_USER_PRESENT);
        mUserPresentReceiver = new UserPresentReceiver();
        registerReceiver(mUserPresentReceiver,userprsentfilter);

        Log.d(TAG, "created.");
    }

    protected void onDestroy() {
        Log.d(TAG, "finished.");
    }

在某个地方,在某个遥远的服务上,有时是通过活动本身,

PowerManager.goToSleep(SystemClock.uptimeMillis())

被称为导致活动被破坏。

谁能解释一下为什么系统有时会在调用 PowerManager.goToSleep 时尝试破坏活动?此外,有没有办法确定或降低活动被系统破坏的机会?我可以肯定地说,当这种情况发生时,资源并不稀缺。

4

1 回答 1

3

所有 Android 应用程序都可能随时关闭。当应用程序处于后台、消耗过多系统资源或手机休眠时,可能会发生这种情况。你不能(也不应该试图)改变这种行为:它是故意这样做的,而且有很好的理由。

如果您有一个操作需要在这些情况下继续运行,您需要将其实现为服务。这将使其即使在手机处于睡眠状态时也能运行。

于 2012-07-05T14:25:21.100 回答