日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在子线程中更改主线程中的控件的信息,在子线程中用toast

發(fā)布時(shí)間:2025/3/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在子线程中更改主线程中的控件的信息,在子线程中用toast 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一丶在子線程中不允許更改主線程中的控件的信息,也不允許在子線程中用toast,我們要更改的話

(1)消息機(jī)制:使用handler

????(由主線程調(diào)用)

????在主程序中Handler handler = new Handler(){

????public void handleMessage(Message msg){

????????????int type = msg.what ;//拿到msg的類型,再判斷
?? ??? ??? ?switch (type) {
?? ??? ??? ??? ?case SUCCESS:
?? ??? ??? ??? ??? ?//拿到信息
?? ??? ??? ??? ??? ?String info? = (String)msg.obj ;
?? ??? ??? ??? ??? //
?? ??? ??? ??? ??? ?break;
?? ?
?? ??? ??? ??? ?case FAILED:
?? ??? ??? ??? ??? ?//拿到信息
?? ??? ??? ??? ??? ?String faild? = (String)msg.obj ;
?? ??? ??? ??? ??? ?Toast.makeText(MainActivity.this, faild, 0).show() ;
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case ERROR:
?? ??? ??? ??? ??? ?//拿到信息
?? ??? ??? ??? ??? ?String error? = (String)msg.obj ;
?? ??? ??? ??? ??? ?Toast.makeText(MainActivity.this, error, 0).show() ;
?? ??? ??? ??? ??? ?break;
?? ??? ??? ?}

};

};

而在子線程中要設(shè)置Message??msg;

msg.what(設(shè)置類型)

msg.obj(設(shè)置內(nèi)容)然后發(fā)送:handler.sendMessage(msg);

(2)常見消息處理api:
? runOnUiThread(runnable): 在ui主線程中運(yùn)行
? playAtTime() : 在某個(gè)時(shí)間運(yùn)行
? playDelay(): 延時(shí)運(yùn)行

例:public class MainActivity extends Activity {

?? ?private TextView tvinfo ;
?? ?
?? ?Handler handler = new Handler(){
?? ??? ?public void handleMessage(android.os.Message msg) {
?? ??? ??? ?System.out.println("接收到了消息");
?? ??? ??? ?tvinfo.setText((String)msg.obj) ;
?? ??? ?};
?? ?} ;
?? ?
?? ?@Override
?? ?protected void onCreate(Bundle savedInstanceState) {
?? ??? ?super.onCreate(savedInstanceState);
?? ??? ?setContentView(R.layout.activity_main);
?? ??? ?
?? ??? ?tvinfo = (TextView) findViewById(R.id.tvinfo) ;
?? ?}
?? ?public void click(View view){?
?? ??? ?handler.postDelayed(new Runnable() {?
?? ??? ??? ?@Override
?? ??? ??? ?public void run() {
?? ??? ??? ??? ?Message msg = Message.obtain() ;
?? ??? ??? ??? ?msg.obj = "哈哈哈,我改變了UI上的內(nèi)容" ;
?? ??? ??? ??? ?handler.sendMessage(msg) ;
?? ??? ??? ?}
?? ??? ?}, 3000) ;???
?? ?}
}

轉(zhuǎn)載于:https://blog.51cto.com/2585211/1669879

總結(jié)

以上是生活随笔為你收集整理的在子线程中更改主线程中的控件的信息,在子线程中用toast的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。