जब मैं हैंडलर.dispatchMessage (msg) का उपयोग करता हूं, हैंडल मैसेज (संदेश संदेश) नए धागे पर चलाया जाएगा, लेकिन जब मैं हैंडलर.sendMessage का उपयोग करता हूं (msg), हैंडल मैसेज (संदेश संदेश) मुख्य धागे पर चलाया जाएगा, जो मुझे अंतर को बता सकता है।हैंडलर.dispatchMessage (msg) और Handler.sendMessage (msg)
धन्यवाद!
डेमो:
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();
}
}
आउटपुट:
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
ऑब्जेक्ट ** "संदेश" ** उपरोक्त कोड में कहां से आता है? – waqaslam
@Waqas आपके कोड से 'mHandler.dispatchMessage (msg) '- यह' हैंडलर डिस्प्च मैसेज '(थोड़ा सरलीकृत) के लिए स्रोत कोड है – zapl
हां लेकिन * प्रेषण संदेश (संदेश संदेश) * कहता है ** msg **, लेकिन कोड में भी ** संदेश ** का उपयोग कर रहा है, जिसे मैं – waqaslam