2 回答
TA贡献1811条经验 获得超6个赞
Message.sendToTarget() ---> Message.target.sendMessage(), 这里target是个Handler,所以你说的消息是发送到这个Message内部持有的Handler对象,加入他的MessageQueue。所以你要找到赋给该Message Handler的地方,在它的handleMessage里就可以看到处理了。至于在什么地方赋的值,可以看在什么地方调用了Message.obtain(Hanlder)或者Handler.obtainMessage()这类的函数
TA贡献1816条经验 获得超6个赞
handler.obtainMessage(MSG_INIT, fileInfo).sendToTarget();
相对于
Message msg = new Message();
msg.what = MSG_INIT ;
msg.obj = fileInfo;
handler..sendMessage(msg);
Message msg 对象可以复用。如果没有就会创建一个Message msg,有的话就用已创建好的。
而Log.d("22222", "INIT: "+fileinfo);
为什么可以这样写?这样写打印出来的是什么?
Log.d的第二个参数是String,"INIT: "+fileinfo会被转成一个String。
这里等价于
"INIT: "+fileinfo.toString()
所有的类都继承于Object,如果没有重写Object的toString()方法,那么fileinfo.toString()打印的是fileinfo这个对象的
"对象实现类的类名+@+hashCode的组合字符串"。
你可以自己试一下。
添加回答
举报