然后,使用sendMessage或sendEmptyMessage方法发送消息。 // 创建一条消息Messagemessage=myHandler.obtainMessage(1);// 创建消息,what=1myHandler.sendMessage(message);// 发送消息 1. 2. 3. 或者,可以直接发送空消息: myHandler.sendEmptyMessage(2);// 发送消息,what=2 1. 解释:obtainMessage方法用于创建消息,并...
然而,当我们在子线程中调用Handler.sendMessage方法时,可能会遇到’Attempt to invoke virtual method ‘boolean android.os.Handler.sendMessage(android.os.Message)’ on a null object reference’这样的错误。 这个错误通常发生在以下情况: Handler对象在子线程中被创建和使用,而Handler对象需要在主线程中创建和使用...
1、Handler调用sendMessage将Message入队到MessageQueue中 2、Looper类的loop()方法中无限循环,从MessageQueue中取出Message,再交回给Handler 3、Handler调用dispatchMessage分发处理消息 Message “消息机制” 要传递的消息,就是这个 Message 了。 在其类描述中,官方有这么一句话: While the constructor of Message is publ...
As soon as loading is done, i send a message to my handler defined in the MainActivity: public void stopSplash() { Message msg = new Message(); msg.what = STOPSPLASH; Date endSplashTime = new Date(); long time = endSplashTime.getTime() - startSplashTime.getTime(); System.out....
结果发现怎么都收不到信息,handleMessage里的日志没有执行。 后来发现handleMessage()和sendMessage()有细微区别。下面直接上代码~ Handlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){Log.e(TAG,"handler msg.what:"+msg.what);super.handleMessage(msg);}};Handlerhandler1=newHandler(newHan...
如果您正在执行不及时返回的同步调用,则可能需要在后台线程上启动处理程序。
你的handler没有发送message吧。。。没有发送怎么能有响应呢??至少要有以下这个代码呀 handler.sendMessage(m);//发出Message对象 或者使用handler.sendEmptyMessage(); 但是根据你的代码是需要传值的,所以应该用第一种方式
public void handleMmessage(Message msg){super.handleMessage(msg);progressBar.setProgress(50);Bundle bundle = msg.getData();System.out.println("123123");uids = bundle.getStringArray("result");}然后将handler作为参数传递到另一个类中 在这个类中调用sendMessage正常 但是不能通过handleMessage接收到发送...
1.handler传值一定是在不同线程之间,否则会报错。 2.handler的handleMessge()方法,会在另一个线程的sendMessage()方法执行之后,也就是消息发出之后,才会自动执行。 3.在Thread是MainActivity的内部类的时候,总是可以的传值的;但是实际应用中把Thread写成了一个单独的java文件FirstThread.java,于是在FirstThread.java...