3

私はAsyncTaskクラスにいます。実行中の進行状況を表示したい。しかし、それはログを印刷していません。

private void registerBackground() {
    new AsyncTask<Void, Integer, String>() {

        @Override
        protected String doInBackground(Void... params) {
            Log.v("TAGGG", "IN doInBackground");
            msg = "Error: ";

            return msg;
        }

        @Override
        protected void onProgressUpdate(Integer... progress) {
            super.onProgressUpdate(progress);
            Log.v("TAGGG", "Progress: " + progress[0] + "%");
        }

        @Override
        protected void onPostExecute(String msg)
        {
            Log.v("TAGGG", msg);
        }
    }.execute();
}
4

1 に答える 1

9

publishProgress() メソッドを使用する必要があります: http://developer.android.com/reference/android/os/AsyncTask.html#publishProgress(Progress...)

このメソッドを doInBackground(Params...) から呼び出して、バックグラウンド計算がまだ実行されている間に UI スレッドで更新を発行できます。このメソッドを呼び出すたびに、UI スレッドで onProgressUpdate(Progress...) の実行がトリガーされます。タスクがキャンセルされた場合、 onProgressUpdate(Progress...) は呼び出されません。

    @Override
    protected String doInBackground(Void... params) {
        Log.v("TAGGG", "IN doInBackground");
        msg = "Error: ";
        int i = 0;
        while (i <= 50) {
            try {
                Thread.sleep(50);
                publishProgress(i);
                i++;
            }
            catch (Exception e) {
                Log.i(TAGGG, e.getMessage());
            }
        }
        return msg;
    }
于 2013-07-27T05:58:59.057 に答える