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

 

所以,大家都比较建议使用第二第三种方法。

 

你可能感兴趣的:(Android开发基础)