1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android Handler Message传递参数 handler子线程和主线程通讯

android Handler Message传递参数 handler子线程和主线程通讯

时间:2021-11-19 09:18:16

相关推荐

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:-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;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。