Android 线程实现的问题

Android 线程实现的问题,android,Android,我有一个开始按钮来启动下载数据的功能(startdownload())。 单击“开始”按钮时,我已放置一个文本视图,显示数据已下载开始,下载完成时,该文本视图显示下载完成。 下载功能放在一个线程下 start_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Status.s

我有一个开始按钮来启动下载数据的功能(startdownload())。 单击“开始”按钮时,我已放置一个文本视图,显示数据已下载开始,下载完成时,该文本视图显示下载完成。 下载功能放在一个线程下

start_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {                       

                Status.setText("Download Started");

                Thread t = new Thread(){      
                    public void run() {                  
                        startdownload();                                                   
                        runOnUiThread(new Runnable() {                                              
                            public void run() {                                 
                                Status.setText("Download Completed");
                                }                
                            });             
                        }};           
                        t.start(); 
            }
        });
此外,我还有一个停止下载数据的停止按钮,它停止线程并显示下载已停止,使用与上述相同的文本视图

stop_button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {           
                onStop();
                Status.setText("Download Stopped");             

            }

public void onStop() {
        super.onStop();
        isRunning = false;  
        }
问题是,当我单击开始按钮时,文本视图显示下载已开始,但当在完全卸载数据之前单击停止按钮时,它显示下载已停止 首先在文本视图中,一段时间后显示下载已完成

请任何人验证我的线程实现过程是否有任何问题。。。
我想这就是为什么当我使用停止按钮停止线程时显示下载已完成的原因……请帮助我……

我认为您可以从线程更新UI,所以请尝试使用处理程序


谢谢。

我认为您可以从线程更新UI,因此请尝试使用处理程序


谢谢。

你真的停止线程了吗?还是在按下停止按钮后继续运行? 您可以在线程中使用标志
isStopped

if (!isStopped) {                                                 
    runOnUiThread(new Runnable() {                                              
        public void run() {                                 
            Status.setText("Download Completed");
        }                
    });             
}

并在停止按钮中将
isStopped
设置为true

你真的停止了线程吗?还是在按下停止按钮后继续运行? 您可以在线程中使用标志
isStopped

if (!isStopped) {                                                 
    runOnUiThread(new Runnable() {                                              
        public void run() {                                 
            Status.setText("Download Completed");
        }                
    });             
}

并在停止按钮中将
isStopped
设置为true

如果
onStop()
Activity.onStop()
回调方法,则不应调用它。它与您的下载线程无关,而且它只是一个系统调用的系统回调。实际上,不建议您自己停止线程,您可能知道,
thread.stop()
方法已被弃用。“停止”一个在循环中执行某些操作的线程很容易:您只需删除控制循环的标志,结果是该线程继续运行,但它什么也不做。您的应用程序体系结构不允许您停止线程,因为您只是在运行一个任务。发布您的下载代码,它将更清楚您正在做什么以及您试图实现什么。

如果
onStop()
Activity.onStop()
回调方法,那么您不应该调用它。它与您的下载线程无关,而且它只是一个系统调用的系统回调。实际上,不建议您自己停止线程,您可能知道,
thread.stop()
方法已被弃用。“停止”一个在循环中执行某些操作的线程很容易:您只需删除控制循环的标志,结果是该线程继续运行,但它什么也不做。您的应用程序体系结构不允许您停止线程,因为您只是在运行一个任务。发布您的下载代码,这样会更清楚您正在做什么以及您试图实现什么。

请显示您如何停止线程的代码。请显示您如何停止线程的代码。单击停止按钮时,我希望停止线程。无需continue@arun,然后检查Egor的我想在停止按钮单击时停止线程。无需continue@arun,然后检查Egor的@Arun,什么样的样品?你仔细看过我的回答了吗?我建议您阅读这篇文章:,其中有一些关于在中实现多线程的有用信息Android@Arun,什么样的样品?你仔细看过我的回答了吗?我建议您阅读这篇文章:,其中有一些关于在Android中实现多线程的有用信息