1. 程式人生 > >Message的三種建立方式及其區別

Message的三種建立方式及其區別

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();
    }
}

所以,大家都比較建議使用第二第三種方法。