android Handler Message传递参数,handler子线程和主线程通讯
生活随笔
收集整理的這篇文章主要介紹了
android Handler Message传递参数,handler子线程和主线程通讯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建Handler
?
private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch(msg.what){case 1 : String str1 = msg.getData().getString("text1");//接受msg傳遞過來的參數String str2 = msg.getData().getString("text2");//接受msg傳遞過來的參數Log.i("lgq","..ab ==7....11......"+str1);break;}} };傳遞參數
?
Message msg = new Message(); msg.what = 1; Bundle bundle = new Bundle(); bundle.putString("text1","梅西的消息傳遞參數的例子!"); //往Bundle中存放數據 bundle.putString("text2","Time:2016-11-03"); //往Bundle中put數據 msg.setData(bundle);//mes利用Bundle傳遞數據 handler.sendMessage(msg);//用activity中的handler發送消息?
handler子線程和主線程通訊?
public class HandleActivity extends AppCompatActivity {public static final String TAG = "MainActivity";private Handler mThreadHandler;private Handler mMainHandler = new Handler(new Handler.Callback() {// 主線程接收到子線程發送的消息@Overridepublic boolean handleMessage(Message msg) {if (msg.obj != null) {Log.e(TAG, msg.obj.toString());mThreadReplyText.setText("收到子線程回復:" + msg.obj.toString());}return true;}});private EditText mMainEditText;private TextView mThreadReplyText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.handleactivity);mMainEditText = findViewById(R.id.main_edit_text);mThreadReplyText = findViewById(R.id.thread_reply_text);new Thread(new Runnable() {@Overridepublic void run() {Looper.prepare();mThreadHandler = new Handler(new Handler.Callback() {// 子線程接收到主線程發送的消息并回復@Overridepublic boolean handleMessage(Message msg) {if (msg.obj != null) {Message reply = Message.obtain();reply.obj = "主線程說\"" + msg.obj.toString()+"\"";// 在子線程中使用主線程中的Handler對象的引用向主線程發送消息mMainHandler.sendMessage(reply);}return true;}});Looper.loop();}}).start();}public void onClick(View view) {switch (view.getId()) {case R.id.main_send_button:Message message = Message.obtain();message.obj = mMainEditText.getText();// 主線程向子線程發送消息:在主線程中使用子線程中的Handler對象的引用向子線程發送消息if (mThreadHandler != null) {mThreadHandler.sendMessage(message);} else {while (mThreadHandler == null) {Log.e(TAG, "子線程還沒有完成ThreadHandler的創建");if (mThreadHandler != null) {Log.e(TAG, "ThreadHandler創建完成!");mThreadHandler.sendMessage(message);}}}break;}} }?
總結
以上是生活随笔為你收集整理的android Handler Message传递参数,handler子线程和主线程通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jmeter常见问题
- 下一篇: bzoj 36733674 可持久化并查