Android 在子線程中更新UI的3種方法



第一種:

new Handler(context.getMainLooper()).post(new Runnable() {
    @Override
    public void run() {
        // 在這裏執行你要想的操作 比如直接在這裏更新ui或者調用回調在 在回調中更新ui
 
    }
});

?

context是你傳過來的context對象


第二種:
// 如果當前線程是UI線程,那麼行動是立即執行。如果當前線程不是UI線程,操作是發佈到事件隊列的UI線程
// 因爲runOnUiThread是Activity中的方法,Context是它的父類,所以要轉換成Activity對象才能使用
((Activity) context).runOnUiThread(new Runnable() {
 
    @Override
    public void run() {
        // 在這裏執行你要想的操作 比如直接在這裏更新ui或者調用回調在 在回調中更新ui
    }
});

?

第三種:

第三種是使用Handler的方法,往Handler中發送一個消息,然後當Handler接收到你發送過來的消息,再在Handler執行相應的操作
這是接收消息執行的代碼:

?
private Handler handler = new Handler() {
 
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
 
        switch (msg.what) {
        case 1:
            button1.setText("點擊安裝");
            down = 1;
            break;
        case 2:
            down = 2;
            button1.setText("打開");
            break;
        }
    }
 
};



這是發送消息的代碼:
// 往handler發送一條消息 更改button的text屬性
Message message = handler.obtainMessage();
message.what = 1;
handler.sendMessage(message);

?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章