A diferença entre Handler.dispatchMessage (msg) e Handler.sendMessage (msg)
quando eu uso Handler.dispatchMessage (msg), o handleMessage (Message msg) será executado no novo thread, mas quando eu uso Handler.sendMessage (msg), o handleMessage (Message msg) será executado no thread principal, que pode dizer me a diferença entre eles.
obrigado!
Demonstração:
<code>public class MainActivity extends Activity { private String TAG = "MainActivity"; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.i(TAG, "Handler:" + Thread.currentThread().getId() + "&arg1=" + msg.arg1); super.handleMessage(msg); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(TAG, "Main:" + Thread.currentThread().getId()); testMethod(); } private void testMethod() { Thread thread = new Thread() { @Override public void run() { Log.i(TAG, "Thread:" + Thread.currentThread().getId()); Message msg = mHandler.obtainMessage(); msg.arg1 = 1; mHandler.dispatchMessage(msg); Message msg2 = mHandler.obtainMessage(); msg2.arg1 = 2; mHandler.sendMessage(msg2); } }; thread.start(); } </code>
}
Saída:
04-19 11:32:10.452: INFO/MainActivity(774): Main:1 04-19 11:32:10.488: INFO/MainActivity(774): Thread:8 04-19 11:32:10.492: INFO/MainActivity(774): Handler:8&arg1=1 04-19 11:32:10.635: INFO/MainActivity(774): Handler:1&arg1=2