在子執行緒中更新UI元件
android UI 介面更新
UI執行緒屬於主執行緒,當涉及到需要更新UI元件的問題時,需要在主執行緒中更新,另起執行緒會出現執行緒崩潰,當子執行緒需要修改主執行緒的UI元件時,需要通過傳送訊息來進行處理,方法如下
-
子執行緒直接修改UI元件,出現報錯:
Activity --> onCreate(){
tv_info = findViewById(R.id.tv_info);
onClick(){
findViewById(R.id.btn_change_str).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
tv_info.setText("hello android!");//子執行緒直接修改UI執行緒(主執行緒)
}
}).start();
}
});
}
} -
解決辦法:
主執行緒中建立訊息處理物件,子執行緒傳送message,給主執行緒的Handler處理
Activity:
private TextView tv_info;
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
tv_info.setText("hello android !");
}
}
};
-->onCreate(){
new Thread(new Runnable() {
@Override
public void run() {
tv_info = findViewById(R.id.tv_info);
handler.sendEmptyMessageDelayed(1, 3000);//子執行緒傳送空訊息給主執行緒,主執行緒handler接收到訊息並處理
}
}).start();
}
//最終效果:點選按鈕修改text成功
相關推薦
在子執行緒中更新UI元件
android UI 介面更新 UI執行緒屬於主執行緒,當涉及到需要更新UI元件的問題時,需要在主執行緒中更新,另起執行緒會出現執行緒崩潰,當子執行緒需要修改主執行緒的UI元件時,需要通過傳送訊息來進行處理,方法如下
如何在子執行緒中更新UI
一:報錯情況 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
win32 - 建立子執行緒中的視窗
跟建立普通的win32視窗一樣,執行緒中的視窗也需要註冊和視窗處理過程 // Test_WM_CLOSE.cpp : Defines the entry point for the application.
執行緒與更新UI,消除偏見,細談原理
前言 相信不少讀者都閱讀過相類似的文章了,但是我還是想完整的把這之間的關係梳理清楚,細節聊好,希望你也能從中學到一些。
如何將Qt的QTcpserver和其他socket事件放到子執行緒中去處理
技術標籤:Qtqtc++多執行緒網路伺服器 如何將Qt的QTcpserver和其他socket事件放到子執行緒中去處理
c# 執行緒中訪問UI
方式一: 1private void btnCalc_Click(object sender, EventArgs e) 2{ 3new Thread(new ThreadStart(Test)).Start();
Android:子執行緒到底能不能更新UI?
問題由來 我們知道,Andoird由於修改UI是執行緒不安全的,只能在主執行緒中修改。如果多個執行緒修改UI肯定會花屏,於是谷歌做了限制,只能在主執行緒中修改UI。但是有次我在子執行緒中修改了UI沒彈異常。
面試官:啊?做了三年Android,子執行緒能不能更新 UI不知道,連UI 執行緒是什麼都說不清楚...
面試官:說說什麼是 UI 執行緒? A:就是用來重新整理 UI 所在的執行緒嘛 面試官:多說點
子執行緒通過QMetaObject::invokeMethod控制UI控制元件
1、注意,要呼叫的型別必須是訊號、槽,以及Qt元物件系統能識別的型別, 如果不是訊號和槽,可以使用qRegisterMetaType()來註冊資料型別。此外,使用Q_INVOKABLE來宣告函式,也可以正確呼叫。
Android 子執行緒更新UI的六種方式
1、注意: (1)子執行緒需要切換到UI執行緒或者主執行緒去更新執行緒。 (2)但是子執行緒單獨也是可以更新UI的,只是谷歌要求我們需要到UI執行緒去更新。
python 在threading中如何處理主程序和子執行緒的關係
之前用python的多執行緒,總是處理不好程序和執行緒之間的關係。後來發現了join和setDaemon函式,才終於弄明白。下面總結一下。
JAVA高階複習-多執行緒建立方式一(匿名子類的方式呼叫執行緒中的run()方法)
/** * @description:練習:建立兩個執行緒,一個執行緒遍歷50內的偶數,一個執行緒遍歷50內的奇數
python中主執行緒與子執行緒的結束順序,你知道嗎?
對於程式來說,如果主程序在子程序還未結束時就已經退出,那麼Linux核心會將子程序的父程序ID改為1(也就是init程序),當子程序結束後會由init程序來回收該子程序。
在主執行緒中為子執行緒解鎖_如何在Windows 10中為Windows Update建立快捷方式
在主執行緒中為子執行緒解鎖 With Windows 10, Microsoft is slowly moving away from the Control Panel in favor of the new Settings app that brings a more unified and consistent place to c
Linux執行緒中建立子執行緒
技術標籤:C語言嵌入式linux多執行緒thread嵌入式 事實證明Linux中在執行緒中建立子執行緒,在子執行緒建立子執行緒是可以的。
C# 執行緒中操作窗體控制元件
如果需要檢視更多文章,請微信搜尋公眾號csharp程式設計大全,需要進C#交流群群請加微信z438679770,備註進群, 我邀請你進群! ! !
winform中更新UI控制元件的方案介紹
這是一個古老的話題。。。直入主題吧! 對winfrom的控制元件來說,多執行緒操作非常容易導致複雜且嚴重的bug,比如不同執行緒可能會因場景需要強制設定控制元件為不同的狀態,進而引起併發、加鎖、死鎖、阻塞等問題。
Android 子執行緒 UI 操作真的不可以?
作者:vivo 網際網路大前端團隊- Zhang Xichen 一、背景及問題 某 SDK 有 PopupWindow 彈窗及動效,由於業務場景要求,對於 App 而言,SDK 的彈窗彈出時機具有隨機性。
子執行緒的異常處理 Thread.UncaughtExceptionHandler
這是Thread類的一個內部類,它是一個介面 相關內容 實現類: ThreadGroup 概述 當執行緒因為一個沒有catch到的異常而終止時,可以通過這個介面的實現類處理一些後續工作。
python主執行緒與子執行緒的結束順序例項解析
這篇文章主要介紹了python主執行緒與子執行緒的結束順序例項解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下