2

私のアプリケーションでは、メインスレッド(UI)とは異なるスレッドで作成されたサービスがあります。次に、サービスで、バックグラウンドで無期限に実行される他の3つのスレッドを作成しました。しかし、電話がスタンバイモードになるとすぐに、これらのスレッドは実行を一時停止します。

代わりに、USBケーブルを介して電話をPCに接続すると、スタンバイモードでもテーマ自体を中断することなく、スレッドが正しく機能することがわかります。

しかし、通常の実行でスレッドにこの動作をさせないようにするにはどうすればよいですか?

tnx

解決済み:

私は、PowerManagerオブジェクトを使用するだけでこれを取得できました。このオブジェクトは、acquire()からrelease()までCPUをアクティブのままにするPARTIAL_WAKE_LOCKを取得します。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
 wl.acquire();
   ..CPU will stay on during this section..
 wl.release();
4

1 に答える 1

2

PowerManagerオブジェクトを使用するだけでこれを取得できました。このオブジェクトは、acquire()呼び出しからrelease()呼び出しまでCPUをアクティブのままにするPARTIAL_WAKE_LOCKを取得します。

このように、電話が標準モードになっても、スレッドは確実に実行されます。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
 wl.acquire();
   ..CPU will stay on during this section..
 wl.release();
于 2012-05-24T14:37:46.303 に答える