因此,這裏就是發生的事情:我使用的是runOnUiThread()方法時,該類從其他手機接收到一條消息改變從另一個類的形象圖。我使用mainclass.runOnUiThread(new Runnable ...)來調用它,等等。它在第一次運行應用程序時運行,但當我點擊後退按鈕退出應用程序,然後再次啓動應用程序時,Image View不再更新。我拍攝的日誌顯示,一切正常並正在運行,但Image View不會更改。我沒有收到任何錯誤,在運行應用程序時它不會崩潰,它只是不更新Image View。任何想法可能會造成這種情況?runOnUiThread停止工作,當應用程序被破壞
編輯*:所以這就是我實際使用來改變一個類的ImageView的大小不活動
peerActivity.runOnUiThread(
new Runnable(){
@Override
public void run() {
Log.v("[email protected]", "Thread is running");
Log.v("[email protected]", decodedImage.toString());
// TODO Auto-generated method stub
peerActivity.ivPhoto.setImageBitmap(decodedImage);
Log.v("[email protected]", "Past UI Change");
}
});
凡peerActivity持有其他類的引用和ivPHoto是圖片瀏覽。我想我需要做的是在程序關閉時找到一種殺死該線程的方法(當我進入程序管理器時,它仍然具有「強制關閉」按鈕)。有沒有辦法做到這一點?
Edit2 *:所以我嘗試了一系列不同的方法來處理UI線程,它們都給了我相同的結果:程序在第一次運行時完美運行,但是當我點擊後退按鈕並關閉它時,重新打開它,Image View不再更新。如果我強制關閉應用程序,它會再次正常工作,直到我關閉並重新打開它。
我猜你是在一個單獨的線程解碼圖像。你在使用'AsyncTask'嗎?如果不是的話,你一定要轉向那個; http://developer.android.com/reference/android/os/AsyncTask.html 它將解決您的問題,因爲您將解碼圖像返回到onPostExecute()方法並將其設置在那裏。 onPostExecute()和onPreExecute()和onProgressUpdate()都在UI線程中運行,並且應該始終工作。 – 2012-07-10 17:49:36