Message的三種建立方式及其區別
阿新 • • 發佈:2019-02-09
Java使用執行緒時,一般都要建立Message物件,而Message物件的建立方法有三個:
1.Message msg = new Message();
2.Message msg = Message.obtain();
3.Message msg = handler.obtainMessage();
那麼三者的有什麼區別呢?
public class MainActivity extends Activity { private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { Toast.makeText(MainActivity.this, "hanlder", Toast.LENGTH_SHORT).show(); super.handleMessage(msg); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { // Message msg = new Message(); //直接初始化一個Message物件,很普通的方法 // Message msg = Message.obtain(); Message msg = handler.obtainMessage(); //後面兩個是從整個Messge池中返回一個新的Message例項,通過obtainMessage能避免重複Message建立物件。 //一般在用到執行緒池的時候就會用到這2種。 msg.arg = 1; handler1.sendMessage(msg); } }).start(); } }
所以,大家都比較建議使用第二第三種方法。