問題タブ [wakelock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - アクティブなウェイクロックを確認する方法
何らかの理由で、Android フォンがスリープ状態になりません。ウェイクロックが起動していると思いますが、どのウェイクロックがアクティブかを知る方法はありません。実行中のサービスには疑わしいものは何もリストされておらず、通常と何ら変わりはありません。だから私の質問は:
プロセスが終了すると、Android は確実にウェイクロックを解放しますか? アプリの書き方が悪く、終了する前にウェイクロックを解放しなかった可能性はありますか?
アクティブなウェイクロックを確認する方法はありますか?
これは次のことdumpsys power
を示しています。
android - ウェイクロックが設定されていてもAndroidサービスが停止する
ウェイクロックを正しく実装していなかったに違いありません。これが私がやった方法です。これは正しいです?
およびonStartメソッド
getLock(ctxt).acquire();を使用しているのに、非アクティブな状態が続いた後もサービスが強制終了される理由がわかりません。ご協力いただきありがとうございます!-ドム
android - WakeLock が保持されたままファイナライズされました
および変数はグローバルに定義されpm
ています。keepScreenOn
OnCreate メソッドで PowerManager.WakeLock を取得します。
私のonStart、onResume、およびonRestartで、ロックを取得します
onDestroy、onPause、および onStop で、次のようにロックを解除します。
アプリが終了した後、失敗画面が表示され、adb は次のように不平を言います
java.lang.Exception: 保留中に WakeLock が終了しました: tpd
トレースは、終了する前にロックを解除したことを示しています。私は何を逃したのですか?
onPause
、onStop
、またはの少なくとも 1 つを通過せずにアプリから出る方法はありません
onDestroy
。アプリが
release()
acquire() を呼び出したのと同じくらい頻繁に呼び出していることがわかります。そのため、ウェイクロックが参照カウントされていても、参照はゼロである必要があります。
android - すべてのコードが確実に実行されるようにウェイクロックを使用するアラーム マネージャー
私は Alarm Manager の使用を検討しており、開発者向けドキュメントでこれを読んでいますが、これはよくわかりません。
サービスが開始される前に電話がスリープ状態になる可能性がある状況を具体的に尋ねています(これは私が理解できない部分であるため)。電話がステートメントを実行できる速度に依存していますか? すなわち。別のスレッドを開く startService() を呼び出すため、元のスレッドはサービスが利用可能になる前に作業を完了することができますか?
ありがとう
android - 別のスレッドからの応答を待っている間、ハンドラーとサービスを存続させますか?
繰り返しアラームを使用してBroadcastReceiver()をトリガーし、BroadcastReceiver(OnAlarmReceiver
)を呼び出しますWakefulIntentService.sendWakefulWork(context, PmNotificationService.class);
doWakefulWork
メソッドを以下に示します
このgetRequestParameters().execute(getRequestHandler());
行は、AjaxRequest
オブジェクトとともにオブジェクトを作成しますRequestHandler
。Ajaxリクエストが完了すると、情報がに返送されるという考え方でしたRequestHandler
。
この場合、ハンドラーはPmNotificationService
クラス(拡張WakefulIntentService
)です。
問題、したがって私の質問の基礎は次のメッセージです:
05-12 12:09:08.139:INFO / ActivityManager(52):サービスを停止しています:com.sofurry / .services.PmNotificationService
05-12 12:09:08.558:WARN / MessageQueue(333):ハンドラー{4393e118}がデッドスレッドのハンドラーにメッセージを送信しています
05-12 12:09:08.558:WARN / MessageQueue(333):java.lang.RuntimeException:ハンドラー{4393e118}デッドスレッドのハンドラーにメッセージを送信しています
..。
明らかに、サービスはリクエストを送信するとすぐに実行を停止します。そのリクエストは別のスレッドで実行されるため、その結果、ハンドラーは停止します。
だから私の質問は:私が応答を得るまで(つまり、他のスレッドを待つ)、サービス、したがってハンドラーを存続させることができますか?AjaxRequestオブジェクトは他の誰かによって維持されており、アプリケーション全体で使用されるため、可能であればそれをお勧めします。
アップデート
私は明らかに1つの非常に重要な点を見逃しました。つまり、WakefulIntentService
継承元ではIntentService
なくService
、作業が完了した後に自動的に停止するということです。私は現在、doWakefulWork
方法を少し変更することでそれを解決しました。これが新しいものです:
を使用することがこれを管理するための最良の方法であるかどうかはわかりませんthread.join()
。そのため、誰かがより良い解決策を持っている場合に備えて、回答を投稿する前に、質問に数日間回答しないでおきます。
android - Samsung Galaxy Tab のウェイク ロック
バックグラウンドでパケットを送受信する必要があるアプリを開発しています。しかし、画面がオフになると、CPU とネットワークも無効になることがわかりました。そのため、Android Developers で、画面がオフになった場合でも CPU が動作するようにするには、ウェイク ロックと wifi ロックを使用する必要があることを発見しました。このソリューションは、LG Optimus One などの他のデバイスでは機能しますが、Samsung Galaxy Tab では機能しません。このデバイスでは、画面がオフになるとパケット (UDP) を受信できなくなり、魔法のように電源ボタンを押して画面を再度有効にすると、再起動してパケットを受信します。私のコードでは、次のように呼び出します。
それから
これは Samsung のバグだと思いますが、よくわかりません。もし誰かがヒントをくれたら、本当に感謝します。
PS プログラミングの助けが必要です...画面がシャットダウンしないように手動設定を変更すると、これが機能することは既にわかっています。しかし、私はアプリを開発していて、コードが必要です!!
android - IntentService で WakeLock を使用する必要がありますか?
BroadcastReceiver を使用して、電話がディープ スリープ モード (ソケットでの着信データ パケットや着信テキスト メッセージなど) であっても電話を目覚めさせるイベント (インテント) を受信するとします。次に、受信したデータを IntentService に転送して処理します。WakeLock を使用する必要がありますか?
ウェイクロックを使用しない場合、サービスのインテント キューが空になるまで (したがってサービスが停止するまで) デバイスがスリープ モードにならないことを確認できますか? (処理に時間がかかる場合があるとします)。
WakeLock が必要な場合、WakeLock をいつどこで作成して取得し、いつ解放する必要がありますか? サービスのインテント キューが空になったら、すぐに WakeLock を解放したいと考えています。
前もって感謝します
android - スレッドを作成しない場合、WakeLockを取得する必要がありますか?
(using )Service
の使用を開始するように設定されるを作成しています。私は主に次の理由でメソッド内ですべての処理を行います。AlarmManager
ELAPSED_REALTIME_WAKEUP
onStartCommand
- それほど時間はかかりません(ディスクから小さなファイルを読み取り、おそらくを介して通知をプッシュします
NotificationManager
) - 必要に応じて、別のプロセスで開始するように簡単に設定できます。
このような状況でも、WakeLockを取得する必要がありますか?
私の知る限り、WakeLockを取得する必要があるのは、個別のスレッドを作成する場合のみです(OSはメインスレッドをアイドル状態と見なしてスリープ状態になるため)。それは本当ですか、それとも私はまだOSによって中断される危険があります...居眠りしていますか?
android - 電源ボタンの代わりにタッチで Android をアクティベート
一定期間後にタイムアウトするように画面を表示したいタブレット アプリケーションがありますが、デバイスの側面にある「電源」ボタンの代わりに画面に触れることでユーザーが再度有効にできるようにしたいと考えています。
これに対する最善のアプローチ(バッテリー性能)は何ですか?
- 部分的なウェイク ロックを使用する (画面は反応しますか?)
- 何らかの方法で画面を無効にしますが、すべて (タッチ応答を含む) は機能し続けますか?
- 他の?
これに関する提案はありますか?
android - Android の PROXIMITY_SCREEN_OFF_WAKE_LOCK に関するヘルプ
アプリで近接ウェイクロックを有効にしましたが、近接センサーが何かを検出すると画面がオフになります。しかし、画面が復帰すると問題が発生します。アプリではなく、ロック画面に移動します。これは、画面がオフになっていた時間に関係なく発生します (センサーが数秒後にクリアされた場合でも)。使用したコードは次のとおりです。
その動作を修正する方法はありますか?