0

私のアプリでは、ユーザーがボタンをクリックしてからもう一度クリックするまでの時間をカウントする必要があります。ユーザーは他のアプリやアクティビティを「歩き回る」ことができる必要があり、ユーザーが再びアプリを開くと、カウンターは安定してカウントし続けます。

現在、AsyncTask を使用してバックグラウンドでカウンターを実行していますが、ユーザーが「歩き回り」、他のアプリやアクティビティをいじってから戻ってくると、アプリはカウントされません。初めてアプリを起動したようなものです。

バックグラウンドおよびアクティビティのライフサイクルを通じて、機能し続け、カウントし続けるためには、何をする必要がありますか?

ありがとう

4

3 に答える 3

3

カウントの開始時刻を記録し、アプリが再表示された時刻から差し引いてから、その値を使用して、ディスプレイが実行する必要がある動的カウント タスクを再開してみませんか?

例: 1. ユーザーは 000 秒でアプリを起動します。ミリ秒単位の sys タイムスタンプは 11100000 (またはその他) です。 2. アプリは 5 秒間実行されます。3. ユーザーがメール アプリなどを開きます。 4. 20 秒後、ユーザーはタイマー アプリを再開します。5. アプリはオフセットを計算します。11100025 -11100000 = 25. 6. アプリは 25 で「ティック」を再開します。

于 2012-08-08T15:18:18.393 に答える
1

本当にこれを実行したい場合は、サービスを使用してください。

使用量は次のようになります。カウントを開始する場合は、サービスを開始するためのアクティビティ、1秒ごとにブロードキャストの送信を開始するサービス、またはアクティビティで受信するインテントを作成します。

アクティビティにbroadcastreceiverを実装し、onResumeメソッドとonPauseメソッドで登録および登録解除する必要があります。

ユーザーがボタンをもう一度クリックした後、アクティビティからサービスにブロードキャスト/インテントを送信して、カウントを停止するように指示します。

サービスはアクティビティのライフサイクルにバインドされておらず、停止するように指示するブロードキャスト/インテントを受信しない限り実行されます。

于 2012-08-08T15:33:02.193 に答える
0

答えは簡単です。数える必要があるものは何でも数えるサービスが必要です。

于 2012-08-08T15:29:55.443 に答える