1

BroadcastReciever を拡張するクラスと、AsyncTask を拡張する別のクラスがあります。

SMSを受信すると、「AsyncTask-extended」クラスを使用してタイマーを起動するようにしたかったのです。
電話がアイドル状態であるか、30 秒間ユーザー入力をまったく受信しなかった場合、30 秒後に関数が実行されます。
そうしないと、タイマーが停止します。

私はすでにタイマーの部分を停止しています(ただし、ランダムに時期尚早に停止します)
そして今、タイマーの実行中にユーザー入力があったかどうかを確認する方法を考え出しています。

上記のユーザー入力を確認する方法を教えてもらえますか?

4

2 に答える 2

1

つまり、基本的に ACTION_SCREEN_ON ブロードキャスト インテントをリッスンするために必要なものです。

それを実装する手順:

1) SMS 用の BroadcastReceiver をセットアップします。これを SMSBroadcastReceiver と呼びましょう。

2) SMSBroadcastReceiver.onReceive メソッドでは、次の 2 つのことを行う必要があります。

2.1) AlarmManagerを使用して、関数の将来の実行をスケジュールします。AsyncTasks を使用する必要はありません。

2.2) ACTION_SCREEN_ONイベントをリッスンする新しい BroadcastReceiver を登録します。このレシーバーの実装は、ステップ 2.1 でスケジュールされた操作をキャンセルする必要があります。

また、ACTION_SCREEN_OFF でのみ SMSBroadcastReceiver を登録することを検討してください。

于 2012-11-16T18:48:53.160 に答える
0

電話がアイドル状態になると、現在のアクティビティのメソッド onStop() が呼び出されます。このメソッドをオーバーライドし、呼び出されたときに必要なことを行います。電話がアイドル状態から戻ると、メソッド OnResume() および onRestart() が呼び出されます。これらをオーバーライドすることもできます。アクティビティのライフサイクルについて詳しくは、http: //developer.android.com/reference/android/app/Activity.htmlをご覧ください。

于 2012-11-16T18:38:26.677 に答える