Android在子執行緒更新UI的三種方式

2021-10-07 19:23:30 字數 963 閱讀 5733

第一種: handler直接post

new handler(mcontext.getmainlooper()).post(new runnable()

第二種:runonuithread(需要可以拿到activity)

// 如果當前執行緒是ui執行緒,那麼行動是立即執行。如果當前執行緒不是ui執行緒,操作是發布到事件佇列的ui執行緒

// 因為runonuithread是activity中的方法,context是它的父類,所以要轉換成activity物件才能使用

((activity) context).runonuithread(new runnable()

第三種:handler sendmessage

第三種是使用handler的方法,往handler中傳送乙個訊息,然後當handler接收到你傳送過來的訊息,再在handler執行相應的操作。

這是接收訊息執行的**:

private handler handler = new handler() {

@override

public void handlemessage(message msg) {

super.handlemessage(msg);

switch (msg.what) {

case activenumber:

maintainprotos.activenumber activenumber = (maintainprotos.activenumber) msg.obj;

break;

這是傳送訊息的**:

message msg = message.obtain();

msg.what = activenumber;

msg.obj = activenumber;

mhandler.sendmessage(msg);

android 子執行緒更新UI例項

package com.example.test0207 handler import android.os.bundle import android.os.handler import android.os.message import android.view.menu import andr...

Android 在子執行緒中更新主線程UI

最近發現以前在eclipse中使用的runonuithread在studio中不能使了,所以又找了幾個更新ui的方法 第一種方法 new handler context.getmainlooper post new runnable 第二種方法 如果當前執行緒是ui執行緒,那麼行動是立即執行。如果當...

Android之在子執行緒更新UI 一

方法一 用handler 1 主線程中定義handler handler mhandler new handler 2 子執行緒發訊息,通知handler完成ui更新 private void updateweather start 方法一的handler物件必須定義在主線程中,如果是多個類直接互相...