首页 > 试题广场 >

我们都知道Hanlder是线程与Activity通信的桥梁,

[单选题]
我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么在Activity结束时线程销毁过程中会涉及到的方法是
  • onDestroy()
  • onClear()
  • onFinish()
  • onStop()
线程销毁的方法的确是  handler.removeCallBacks() ,  怎么变成了 onDestory(). 这不是销毁Activity的嘛,难道要理解成为。 Activity销毁,线程也被销毁啦。。
发表于 2015-05-05 09:05:33 回复(11)

1、线程的销毁

Hanlder是线程与Activity通信的桥梁,利用handler接收到任务线程,放到任务队列里面派对执行。


//调用该任务线程的run() 方法执行任务线程。

Handler updateBarHandler =new handler();
handler.post(Runnable Thread);

//移除handler里的任务线程,调用线程的stop()方法,销毁线程。
handler.removecallbacks(Runnable Thread);

一个简单的例子如下:
import Android.app.Activity; 
import Android.os.Bundle; 
import Android.os.Handler; 
import Android.util.Log; 
public class HandlerThread extends Activity { 
    private static final String TAG = "HandlerThread"; 
    private Handler mHandler =  new Handler(); 
     
    private Runnable mRunnable = new Runnable() { 
        public void run() { 
            Log.e(TAG, Thread.currentThread().getName() + "Thread run");         
        } 
         
    }; 
    @Override
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);  
        //通过Handler启动线程 
        mHandler.post(mRunnable); 
    } 
     
    @Override
    protected void onDestroy() { 
        //将线程销毁掉 
        mHandler.removeCallbacks(mRunnable); 
        super.onDestroy(); 
    } 
}

发表于 2015-09-19 23:49:13 回复(6)
题目没有说清楚,题目本意是一般的常规写法,在activity结束时,应当一并把有关线程都销毁,因此在onDestroy里调用线程的removeCallbacks。但仔细一看,其实 removeCallbacks调用的就是线程的stop方法
发表于 2015-09-01 09:04:12 回复(4)
线程销毁实际上调用的不是线程的stop方法么?
发表于 2016-08-05 11:25:19 回复(0)
java 线程的生命周期中死亡状态:
执行完run()方法的内容或者被强制终止后  .

//移除handler里的任务线程,调用线程的stop()方法,销毁线程。
handler.removecallbacks(Runnable Thread);



发表于 2015-08-04 16:41:46 回复(0)
这题有问题。@焦登宇 这个是正解。
发表于 2015-03-08 21:55:37 回复(4)
几年不刷了,都忘记了。哈哈哈哈哈
贝壳招人,欢迎来撩
发表于 2021-03-23 11:19:19 回复(0)
好像这四个方法都不是Thread类的方法呢。
发表于 2020-04-13 17:35:17 回复(0)
是不是应该这么理解,这题问的是涉及到的方法,并不是说用到的方法,涉及到OnDestroy()方法没毛病.....
发表于 2017-08-08 10:03:35 回复(1)
感觉问题问的应该是在handler的内存泄漏问题,所以应该是在哪个方法销毁handler实例,也就是在哪里执行hhandler.removeCallBack()
发表于 2017-03-19 10:50:59 回复(0)
调用线程的stop方法从而销毁线程,目的是为了移除handler中的任务栈
发表于 2016-09-19 23:42:11 回复(0)
这题目也表达的太不清楚了吧,线程摧毁,onDestory是activity的生命周期方法,跟线程有啥关系。。。再说,楼上有些说的是handler的removeCallbacks,这个也不是线程销毁啊
发表于 2016-08-25 11:12:34 回复(0)
onStop()吧
发表于 2016-08-12 11:41:52 回复(0)
确定这个题没错?问的是线程销毁的方法又没问在Activity中的那个方法中销毁

发表于 2016-08-02 13:28:52 回复(0)
在activity结束时,应当一并把有关线程都销毁,因此在onDestroy里调用线程的removeCallbacks。但仔细一看,其实 removeCallbacks调用的就是线程的stop方法
发表于 2016-07-26 22:59:25 回复(0)
handler.removeCallBack
发表于 2016-07-13 16:38:50 回复(0)
怎么是OnDestroy呢,
发表于 2016-04-20 17:19:01 回复(0)
不明白,为啥是onDestory()方法,只能在Activity销毁的时候才能销毁线程吗?
发表于 2016-03-08 22:06:20 回复(0)
问题题意有问题 描述不清吧
发表于 2016-03-02 14:49:45 回复(0)
其实这道题目应该意思是在哪里调用线程销毁的方法吧,原谅出题人的语文水平=。=
一般线程调用完会自行销毁,如果线程要一直存在的话,可以采用while(控制变量)的方式进行间接结束销毁线程。
还有就是使用while(true){Thread.sleep(毫秒); }这种模式,然后
if(thread!=null&&thread.isAlive()) 
thread.interrupted();
这样通过try catch直接报异常杀死线程←_←这招也是蛮拼的

发表于 2016-02-24 20:08:38 回复(0)