1. 程式人生 > >子執行緒中使用Toast或者更新UI(轉)

子執行緒中使用Toast或者更新UI(轉)

Toast只能在主UI執行緒使用,使用下面的辦法可以解決

第一種,使用Looper,不過這種辦法會終止,子執行緒之後的程式碼

Looper.prepare();	
Toast.makeText(aActivity.this,"test",Toast.LENGTH_SHORT).show();
Looper.loop();

第二種,就是用 Handler Message
private final Handler msgHandler = new Handler(){
        public void handleMessage(Message msg) {
                switch (msg.arg1) {
                case R.string.msg_not_network:
                        Toast.makeText(getApplicationContext(), getResources().getString(R.string.msg_not_network), Toast.LENGTH_SHORT).show();
                        break;
                default:
                        break;
                }
        }
};

在子執行緒中使用
Message msg = msgHandler.obtainMessage();
msg.arg1 = R.string.msg_not_network;
msgHandler.sendMessage(msg);


相關推薦

執行使用Toast或者更新UI()

Toast只能在主UI執行緒使用,使用下面的辦法可以解決 第一種,使用Looper,不過這種辦法會終止,子執行緒之後的程式碼 Looper.prepare(); Toast.makeText(aActivity.this,"test",Toast.LENGTH_SHOR

關於執行裡不能更新UI操作的解決方法

如圖片所示,我在子執行緒裡寫了更新TextView的程式碼,提示有錯,大致意思就是在子執行緒裡不能更新UI,只能在主執行緒裡操作 百度了一下,解決方法如下: 用Activity物件的runOnUiThread方法更新在子執行緒中通過runOnUiThread()方法更新

Android執行真的不能更新UI嗎?讓我們從原始碼的角度一探究竟

關於主執行緒更新UI這已經是個老生常談的話題,幾乎所有人都知道Android要在主執行緒更新UI。 Android官方文件這樣描述:Android UI操作並不是執行緒安全的,並且這些操作必須在UI執行緒執行。 那麼,子執行緒到底能否更新UI,如果不能更新U

Android執行模型--在執行更新UI

       Android是支援多執行緒的。主執行緒也稱UI執行緒,子執行緒也稱工作執行緒。一般耗時操作在子執行緒中進行,更新UI操作在主執行緒中進行。在主執行緒中執行耗時操作容易發生ANR錯誤,即應用程式無響應。而Android中又規定只有建立UI的執行緒

執行更新UI

       和許多其他的GUI庫一樣,Android的UI也是執行緒不安全的。也就是說,如果想要更新應用程式裡的UI元素,則必須在主執行緒中進行,否則就會出現異常。 一、新建一個AndroidThreadTest專案,然後修改activity_main.

android-如何在執行更新ui

正如我們知道的,android是不讓在子執行緒中更新ui的。在子執行緒中更新ui會直接丟擲異常 Only the original thread that created a view hierarchy can touch its views 那麼這種檢查

Looper.prepare()和Looper.loop(),在執行更新UI

當子執行緒想直接更新UI時,例如進行Toast提示。 可以先Looper.prepare(),然後Looper.loop(),程式碼如下(加黑處): public class CrashHandler implements UncaughtExceptionHandler

Android執行更新UI的3種方法

//UI執行緒中執行 new DownloadImageTask().execute( "www.91dota.com" ); private class DownloadImageTask extends AsyncTask { protected String doInBackgrou

安卓學習筆記(一)——執行的用法及怎樣在執行更新UI

建立執行緒方法: 1、新建一個繼承自Thread的類MyThread,然後重寫父類的run()方法,在裡面寫要執行的內容; class MyThread extends Thread { @Ove

使用Handler在執行更新UI

我們知道,使用者的耐性是有極限的。一般來說,一個請求如果2到5秒鐘沒有響應,使用者就會想砸機器。為了優化使用者的互動設計,就不能阻塞UI執行緒,也就是不能在UI執行緒中執行耗時的操作,比如說網路請求。但是這種耗時操作是不可避免的,所以耗時操作只能放到子執行緒中。一個耗時操作

Android多執行之(一)View.post()原始碼分析——在執行更新UI

       提起View.post(),相信不少童鞋一點都不陌生,它用得最多的有兩個功能,使用簡便而且實用:        1)在子執行緒中更新UI。從子執行緒中切換到主執行緒更新UI,不需要額外new一個Handler例項來實

android為什麼不允許在執行訪問UI

首先,UI控制元件不是執行緒安全的,如果多執行緒併發訪問UI控制元件可能會出現不可預期的狀態 那為什麼系統不對UI控制元件的訪問加上鎖機制呢? 缺點有兩個: 加上鎖機制會讓UI訪問的邏輯變得複雜; 鎖機制會降低UI訪問的效率,因為鎖機制會阻塞某些執行緒的執行

MFC執行更新控制元件內容的兩種辦法

一、概述 每個系統中都有執行緒(至少都有一個主執行緒),而執行緒最重要的作用就是並行處理,提高軟體的併發率。針對介面來說,還能提高介面的響應能力。一般的,為了應用的穩定性,在資料處理等耗時操作會單獨在一個執行緒中執行,而所有與主UI執行緒有關的控制元件資料重新整理應該到主UI執行緒中處理。也就

android 在執行操作UI 導致Fragment顯示空白問題

需求是這樣的 當沒網路的請求下就顯示快取中的資料,這樣做是為了在沒網的情況下 不至於介面什麼都沒有,給使用者的體驗效果不好,所以就加了個快取機制,但是這個快取的程式碼是我從上家公司拷貝過來的,沒怎麼仔

(轉載)AndroidHandler的使用方法——在執行更新介面

本文主要介紹Android的Handler的使用方法。Handler可以傳送Messsage和Runnable物件到與其相關聯的執行緒的訊息佇列。每個Handler物件與建立它的執行緒相關聯,並且每個Handler物件只能與一個執行緒相關聯。     Handler一般有兩種

Android--Handler的使用方法:在執行更新介面

本文主要介紹Android的Handler的使用方法。Handler可以傳送Messsage和Runnable物件到與其相關聯的執行緒的訊息佇列。每個Handler物件與建立它的執行緒相關聯,並且每個Handler物件只能與一個執行緒相關聯。     Handler一般有

Android進階(十六)執行呼叫Toast報Can't create handler inside thread that has not called Looper.prepare() 錯誤

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android主執行執行傳送資訊

主要用到了Handler類,Looper類和Message類 先介紹下這幾個類 Looper類,是用來為一個執行緒開啟一個訊息佇列,預設情況下Android下新開啟的執行緒沒有開啟訊息佇列的,除了主執行緒外,主執行緒系統會預設為其開啟一個訊息佇列;looper是通過MessageQueu

執行new Handler報錯--Can't create handler inside thread that has not called Looper.prepare()

在子執行緒中new一個Handler為什麼會報以下錯誤? java.lang.RuntimeException:  Can't create handler inside thread that has not&

執行呼叫UpdateData(TRUE/FALSE)出現異常解決方法

       使用子執行緒去呼叫UpdateData(TRUE/FALSE)方法更新窗體控制元件值時,總是會彈出“Debug Assertion Failed”異常錯誤;        原因是:工作執行緒(子執行