java - Android 完成线程

标签 java android multithreading

我想完成线程。 ProgressBar 进度将为 0,单击按钮时线程将关闭。我使用了destroy()、stop()、resume()、interrupt(),但不起作用。我怎样才能完成线程?

 class TIME implements Runnable {
    @Override
    public void run() {

        for (int i=0; i<10; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            handler.post(new Runnable() {
                @Override
                public void run() {
                    progressBar.setProgress(i);
                    if(i==9){Log.i("Log","Time's Up!");}
                }
            });
        }
    }
}

在onCreate()中

new Thread(new TIME()).start();
ProgressBar progressBar=(ProgressBar)findViewById(R.id.progressBar1);
progressBar.setMax(2000);
Button bt=(Button)findViewById(R.id.button1);
bt.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
          //TIME thread will finish. And progressBar.setProgress(0);
        }
    });

最佳答案

如果您的意思是线程希望自行完成 - 只需退出其运行函数,系统就会将其清理。如果你的意思是你想从另一个线程退出它 - 你不能直接这样做,因为它是一个非常不安全的操作,你永远不知道线程当时在做什么,以及它是否可能导致资源泄漏或将数据留在状态不好。相反,您 cancel() 线程,并且线程应该偶尔查看 isCanceled() 是否为 true,如果是,则像上面一样退出其 run 函数。

关于java - Android 完成线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267091/

相关文章:

java - Spring规范的谓词应该是静态的吗?

java - 生成 SAS token 以连接到 Azure eventhub 的正确参数是什么?

Java/JUnit - 比较两个多项式对象

android - 等待阻塞 GC ProfileSaver

android - Flutter PageRouteBuilder TransitionsBuilder 自定义辅助动画?

java 11 HttpClient 导致无休止的 SSL 循环

c++ - 带锁的指令重排序

java - 不能从静态上下文引用非静态变量

java - 单击按钮的上半部分 - 不起作用?

python - 从服务器 python 向客户端发送连续数据