0

私のアプリでは、バックグラウンド サービスで写真を転送しています。写真ごとに、sqlite db にデータベース エントリがあります。ここで、転送する必要がある写真の量を示す情報領域をメイン画面に追加したいと考えています。この領域は 10 秒ごとに更新する必要があるため、ユーザーは実行する必要があるジョブの数を確認できます。

このような問題を解決するためのアンドロイドのベストプラクティスは何ですか?

ありがとう

4

3 に答える 3

2

10秒の遅延でメソッドの「再帰呼び出し」を作成しようとすることができます

    Handler handler = new Handler();

    handler.postDelayed(new Runnable() {
    @Override
    public void run() {

    //do anything


    }
    }, 10000);

**または以下の方法を使用することをお勧めします

Timer t = new Timer();

void timerMethod()
{
t.schedule(new TimerTask() {
public void run() {


Log.d("timer", "timer ");
//do anything


}
}, 10000, 10000);

}
于 2012-12-18T17:50:25.930 に答える
1

10秒ごとに手動で更新するのではなく、タスクが完了するたびに更新する方がよい場合があります。タスクがUIスレッドで発生していない限り、2つは互いに干渉しません。また、10秒ごとに1回の大幅な変更を行うのではなく、プログレスバーが徐々にいっぱいになる(またはパーセンテージが徐々に上がるなど)と、アプリがよりスムーズになります。

UI以外のスレッドからUIを更新するには、ハンドラーを使用する必要があります。ハンドラーを使用してサービスからAndroidの開発者サイトのUIに通信する方法の良い例があります。

于 2012-12-18T17:54:59.303 に答える
0

を使用しAsyncTaskます。作業が開始されdoInBackground()、タスク中にUIpublishProgress()を更新し、タスクの最後にUIを更新しますonPostExecute()。の利点AsyncTaskは、sの作成と管理を処理しHandler、コードをビルドするための簡潔な場所を提供することです。

スケルトンコードについては、こちらのコメントを参照してください:アプリがハングしているように見えないようにする

APIについてもお読みください:http://developer.android.com/reference/android/os/AsyncTask.html

そして、AsyncTasksのチュートリアル:http ://www.vogella.com/articles/AndroidPerformance/article.html#asynctask

于 2012-12-18T20:14:36.353 に答える