当前位置:首页 » 安卓系统 » android线程退出

android线程退出

发布时间: 2023-01-08 23:05:19

‘壹’ android 关闭程序的时候结束线程

可以自己定义一个变量来控制线程的运行
如Boolean b=true;
public void run() {
while(b){
//获取网络数据的函数
pvdata = ParseString(url);
Thread.sleep(20000);
}
};
//在你要结束该线程的时候你可以设置b=false;线程自己退出,这样是最好的方式

‘贰’ Android如何停止线程的方式

一种是调用它里面的stop()方法,另一种就是你自己设置一个停止线程的标记
(推荐这种)
如果使用Thread.stop方法停止线程,不能保证这个线程是否完整的运行完成一次
run方法;但是如果使用停止的标记位,那么可以保正在真正停止之前完整的运行完
成一次run方法;第二中方式,但是对于麻烦的动作,解决方式是这一个全局变量,每个复杂的动作都进行判断一下

‘叁’ android需要考虑结束线程吗

  • Android终止线程的方法前提

    线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象。但有时run方法是永远不会结束的。

  • 三种方法可以结束线程:

  1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。

  2. 使用interrupt()方法中断线程。

  3. 使用stop方法强行终止线程(不推荐使用,可能发生不可预料的结果)。

  • 使用退出标志终止线程

    使用一个变量来控制循环,例如最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。代码如下:

  • 使用stop方法终止线程

    程序中可以直接使用thread.stop()来强行终止线程,但是stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,不安全主要是:thread.stop()调用之后,创建子线程的线程就会抛出ThreadDeatherror的错误,并且会释放子线程所持有的所有锁。

其他注意事项:

前两种方法都可以实现线程的正常退出,也就是要谈的优雅结束线程,第3种方法相当于电脑断电关机一样,是不安全的方法。

‘肆’ Android 中如何关闭线程

在android中开启的线程用Thread.stop()来关闭是不会真正关闭的,当我们再次start线程的时候,会产生异常:Thread is already started. 针对这个问题可以在线程的run方法里,加一个判断标志。例如: class TestThread extends Thread{ public void run(){ while(isTrue){ //做你要做的事。}}}在需要关闭的时候,将flag置为false: isTrue=false;并且将运行的线程对象挂起然后置为null(假设开启的线程对象为mTestThread) : mTestThread.interrupt(); mTestThread=null; 再次用到的时候进行如下处理即可: if(mTestThread==null){

‘伍’ Android怎么结束一个线程

在Java语言中,安全结束线程的方法就是“让线程的自身流程执行完”。
出现“僵尸线程”的原因:1.线程在死循环中执行。2.线程阻塞。

很明显,你的ReadHandlerThread线程发生了线程阻塞。

dis.readFully(b),你在这里调用了一个阻塞方法,由于socket的另一端一直没有发送数据,ReadHandlerThread线程一直阻塞在了这里,等待接收完136字节的数据。136字节没有接收完,readFully方法将一直处于阻塞状态。

解决方法,设置socket的等待超时值,而不是无限等待。

‘陆’ android中线程假退出的处理

朋友你好,
感谢你对我们团队的支持与信任,
针对你提出的这个问题,Google官方给出的解决方法是:
在线程中做个标志boolean cancel = false;线程每一步操作之前都检测if(cancel),用户取消的时候cancel = true;
但是,这个方法不精确,线程还是会跑一段时间等上个操作结束,所以严格上来说没有根本的解决办法,因此只能期待以后的版本中能有更好的解决办法。
希望能够对你有所帮助。

‘柒’ 如何中断Android线程

当你在后台使用Thread或者AsyncTask来处理一些耗时的操作时,可能想要对这些线程加以控制,其中包括中断线程。 很多情况下,当用户启动程序的时候,一个后台运行的线程会同时启动去加载内容。但是,当用户离开程序时,线程应该被打断,因为现在用户已经不再关注程序了,同时也不再关注线程处理的结果,而线程是要占用系统的资源的,如果不及时中断线程,会导致系统资源的浪费。 除此之外,你可以使用 Thread.interrupt()或者AsyncTask.cancel() 方法,但是这不会马上中断线程,因此,只能在自己的线程中实现中断并退出。 在许多情况下,后台运行的线程都有一个主循环,因此你可以在循环中判断线程是否被中断,若被中断,则退出循环,从而结束进程。例如一个线程下载线程,可以通过 isInterrupted() 方法判断当前线程是否被中断。 thread=newThread(){publicvoidrun(){while(!isInterrupted()&&hasMoreDataToDownload()){ downloadAndWriteSomeMore();}if(isInterrupted()){ ();}else{callBack();}}}thread.start(); thread.interrupt(); 如果线程被中断,则调用 () 函数,删除没有完成下载的文件。当线程没有被中断,则调用callBack()函数,可以使用handler发送下载完成的信息。 如果你的线程中没有这样一个主循环,例如只是执行一个很耗时的SQL查询操作,可以在查询操作之后调用 来判断是否需要结束线程。

‘捌’ android中的线程该怎么停掉

线程不要直接停止,那样会产生线程不安全的。
你要配合Handler来用。
当下载完之后调用handler.sendEmptyMessage()方法。

或者你换成AsyncTask来实现线程下载。

热点内容
java任务管理 发布:2025-05-16 22:17:02 浏览:571
安卓如何修改cpu 发布:2025-05-16 21:58:20 浏览:364
pythonainb 发布:2025-05-16 21:45:56 浏览:855
淘汰服务器可以做家用电脑吗 发布:2025-05-16 21:41:31 浏览:842
游程编码c语言 发布:2025-05-16 21:26:51 浏览:586
帝来哪个配置值得购买 发布:2025-05-16 21:12:29 浏览:462
什么是nodejs前端服务器 发布:2025-05-16 21:12:17 浏览:405
编译选项立即绑定未定义符号 发布:2025-05-16 20:55:13 浏览:907
linuxmysql慢日志 发布:2025-05-16 20:47:58 浏览:272
村两委有哪些配置 发布:2025-05-16 20:34:47 浏览:294