4

进度条不更新。但是,它会在任务完成时结束。

int totalSms = 12;
int currentSms = 0;

public class ProgressTask extends AsyncTask<String, Integer, Boolean> {

    /** progress dialog to show user that the backup is processing. */
    private ProgressDialog dialog;

    public ProgressTask(ScanInboxActivity activity) {
        dialog = new ProgressDialog(activity);
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMax(totalSms);
    }

    protected void onPreExecute() {
        dialog.setMessage("Scan start");
        dialog.show();
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        Log.d(TAG, "in onProgressUpdate: " + values[0]); // shows actuall count in the log
        dialog.setProgress(values[0]); // does not update

                    //tried even this, does not work
        //dialog.incrementProgressBy(values[0]);
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        if (dialog.isShowing()) {
            dialog.dismiss();
        }
        populateList();
    }

    protected Boolean doInBackground(final String... args) {
            try {
                Context context = getApplicationContext();
                SharedPreferences prefs = PreferenceManager
                        .getDefaultSharedPreferences(context);
                while (currentSms < totalSms) {
                    Thread.sleep(1000);
                    currentSms++;
                    publishProgress(currentSms);
                }
            } catch (IllegalArgumentException e) {
            } catch (InterruptedException e) {

            }
            return true;
        }
4

1 回答 1

9
dialog.setIndeterminate(true);

应该是false,否则加载值将不会被评估

于 2013-06-18T10:13:46.593 回答