java - 进度条无限旋转

标签 java android progress-bar android-asynctask progressdialog

代码:

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // fileReader();

        new xyz().execute();

    }// button
});// button end        

private class xyz extends AsyncTask<Void, Void, Void> {

    private final ProgressDialog dialog = new ProgressDialog(CCActivity3.this);

    protected void onPreExecute() {
        this.dialog.setCancelable(true);
        this.dialog.setMessage("Please Wait...");
        this.dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        this.dialog.setProgress(0);
        this.dialog.setMax(100);
        this.dialog.show();
    }

    // put your code which preload with processDialog  
    private boolean running = true;

    @Override
    protected Void doInBackground(Void... params) {

        // while( running ) {
        fileReader(); //i keep getting error here
        //}

        return null;
    }

    @Override
    protected void onPostExecute(final Void unused) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }   
        super.onPostExecute(unused);
        //this.dialog.dismiss();
    }
}

堆栈跟踪:

04-10 21:05:05.398: D/skia(30039): purging 270K from font cache [38 entries]
04-10 21:05:05.508: D/dalvikvm(30039): GC_EXPLICIT freed 1828K, 18% free 12468K/15107K, external 7017K/7937K, paused 106ms
04-10 21:06:36.318: D/skia(30039): purging 13K from font cache [2 entries]
04-10 21:06:36.418: D/dalvikvm(30039): GC_EXPLICIT freed 3271K, 39% free 9233K/15107K, external 7017K/7937K, paused 93ms
04-10 21:07:37.208: W/dalvikvm(30039): threadid=9: thread exiting with uncaught exception (group=0x40015568)
04-10 21:07:37.228: E/AndroidRuntime(30039): FATAL EXCEPTION: AsyncTask #1
04-10 21:07:37.228: E/AndroidRuntime(30039): java.lang.RuntimeException: An error occured while executing doInBackground()
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.lang.Thread.run(Thread.java:1019)
04-10 21:07:37.228: E/AndroidRuntime(30039): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.view.ViewRoot.checkThread(ViewRoot.java:2954)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.view.ViewRoot.invalidateChild(ViewRoot.java:644)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:670)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.view.ViewGroup.invalidateChild(ViewGroup.java:2533)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.view.View.invalidate(View.java:5288)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.widget.TextView.checkForRelayout(TextView.java:5663)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.widget.TextView.setText(TextView.java:2814)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.widget.TextView.setText(TextView.java:2682)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.widget.TextView.setText(TextView.java:2657)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at dev.android.CCActivity3.fileReader(CCActivity3.java:207)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at dev.android.CCActivity3$xyz.doInBackground(CCActivity3.java:110)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at dev.android.CCActivity3$xyz.doInBackground(CCActivity3.java:1)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-10 21:07:37.228: E/AndroidRuntime(30039):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-10 21:07:37.228: E/AndroidRuntime(30039):    ... 4 more
04-10 21:07:37.258: I/Process(30039): Sending signal. PID: 30039 SIG: 9
04-10 21:14:03.819: D/dalvikvm(30687): GC_EXTERNAL_ALLOC freed 109K, 64% free 487K/1347K, external 0K/0K, paused 4ms
04-10 21:14:03.988: D/dalvikvm(30687): GC_EXTERNAL_ALLOC freed 4K, 64% free 491K/1347K, external 1K/513K, paused 14ms
04-10 21:14:04.778: D/dalvikvm(30687): GC_EXTERNAL_ALLOC freed 10K, 61% free 534K/1347K, external 1521K/2013K, paused 12ms
04-10 21:14:04.968: D/dalvikvm(30687): GC_EXTERNAL_ALLOC freed 2K, 61% free 533K/1347K, external 4856K/6064K, paused 10ms
04-10 21:14:27.868: W/IInputConnectionWrapper(30687): getExtractedText on inactive InputConnection
04-10 21:14:27.888: W/IInputConnectionWrapper(30687): getCursorCapsMode on inactive InputConnection
04-10 21:14:27.888: W/IInputConnectionWrapper(30687): getExtractedText on inactive InputConnection
04-10 21:14:27.898: W/IInputConnectionWrapper(30687): performPrivateCommand on inactive InputConnection
04-10 21:14:38.208: D/szipinf(30687): Initializing inflate state
04-10 21:14:38.238: D/szipinf(30687): Initializing zlib to inflate
04-10 21:14:40.628: D/dalvikvm(30687): GC_FOR_MALLOC freed 412K, 24% free 3798K/4995K, external 7079K/7937K, paused 27ms
04-10 21:14:40.808: D/dalvikvm(30687): GC_CONCURRENT freed 405K, 18% free 5440K/6595K, external 7079K/7937K, paused 0ms+4ms
04-10 21:14:41.038: D/dalvikvm(30687): GC_CONCURRENT freed 7K, 10% free 7457K/8259K, external 7079K/7937K, paused 1ms+4ms
04-10 21:14:41.288: D/dalvikvm(30687): GC_CONCURRENT freed 351K, 11% free 9202K/10307K, external 7079K/7937K, paused 1ms+7ms
04-10 21:14:41.488: D/dalvikvm(30687): GC_FOR_MALLOC freed 6K, 7% free 10789K/11587K, external 7079K/7937K, paused 75ms
04-10 21:14:41.758: D/dalvikvm(30687): GC_CONCURRENT freed 522K, 10% free 12363K/13635K, external 7079K/7937K, paused 0ms+9ms
04-10 21:14:42.118: D/dalvikvm(30687): GC_CONCURRENT freed 8K, 6% free 14316K/15107K, external 7079K/7937K, paused 1ms+9ms
04-10 21:15:55.768: D/skia(30687): purging 340K from font cache [47 entries]
04-10 21:15:55.888: D/dalvikvm(30687): GC_EXPLICIT freed 1817K, 17% free 12542K/15107K, external 7079K/7937K, paused 107ms
04-10 21:16:42.368: D/skia(30687): purging 13K from font cache [2 entries]
04-10 21:16:42.478: D/dalvikvm(30687): GC_EXPLICIT freed 1038K, 24% free 11524K/15107K, external 7079K/7937K, paused 102ms
04-10 21:18:28.688: D/skia(30687): purging 13K from font cache [2 entries]
04-10 21:18:28.788: D/dalvikvm(30687): GC_EXPLICIT freed 6921K, 70% free 4646K/15107K, external 7079K/7937K, paused 91ms
04-10 21:18:33.758: W/dalvikvm(30687): threadid=9: thread exiting with uncaught exception (group=0x40015568)
04-10 21:18:33.768: E/AndroidRuntime(30687): FATAL EXCEPTION: AsyncTask #1
04-10 21:18:33.768: E/AndroidRuntime(30687): java.lang.RuntimeException: An error occured while executing doInBackground()
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.lang.Thread.run(Thread.java:1019)
04-10 21:18:33.768: E/AndroidRuntime(30687): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.view.ViewRoot.checkThread(ViewRoot.java:2954)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.view.ViewRoot.invalidateChild(ViewRoot.java:644)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:670)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.view.ViewGroup.invalidateChild(ViewGroup.java:2533)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.view.View.invalidate(View.java:5288)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.widget.TextView.checkForRelayout(TextView.java:5663)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.widget.TextView.setText(TextView.java:2814)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.widget.TextView.setText(TextView.java:2682)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.widget.TextView.setText(TextView.java:2657)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at dev.android.CCActivity3.fileReader(CCActivity3.java:207)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at dev.android.CCActivity3$xyz.doInBackground(CCActivity3.java:110)//file reader
04-10 21:18:33.768: E/AndroidRuntime(30687):    at dev.android.CCActivity3$xyz.doInBackground(CCActivity3.java:1)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-10 21:18:33.768: E/AndroidRuntime(30687):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-10 21:18:33.768: E/AndroidRuntime(30687):    ... 4 more

我的应用程序几乎没有延迟,因此我决定在应用程序加载时添加进度条微调器。我的代码在进度条旋转大约 6 分钟后显示错误。它会在 fileReader() 上抛出错误,有时它会永远旋转。 FileReader() 是另一个类文件,它是代码的核心。如果您想看这个类请点击here 请帮我。我很欣赏。

最佳答案

问题是您正在尝试通过 doInBackground 方法更改 UI。根本原因可能是您的 FileReader 类执行 display.setText(fg); 操作。当您处于 doInBackground 中时,您无法更改 Acticity UI。您将需要使用 AsyncTask 的 publishProgressonProgressUpdate方法来实现这一点。

关于java - 进度条无限旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097812/

相关文章:

java - 将字符串转换为颜色 int

java - 从 Aar 模块 Android 执行 Handheld 类中的方法

android - 为什么最大长度过滤器不起作用?安卓

android - 去除android进度条中的进度条背景

java - 进度条和下载

java - CXF NullPointerException(无法在 Tomcat 7 上编译 Web 服务 stub )

java - 模式不允许包含数字的单词?

java - Java程序需要的建议

java - 如何构建具有自定义一周第一天的区域设置?

Android:进度条作为占位符