2010-02-07 50 views
2

我知道如何使用處理程序來更新UI元素,如進度條吐司等從線程處理UI代碼

當背景消失,我遇到的問題是,如用戶按後退按鈕或由於某種原因完成活動。這會導致我的應用程序經常崩潰。

我嘗試使用getApplicationContext()(思考,這將是在我的整個應用程序提供),但沒有工作,不斷 - 不是我的應用程序崩潰!

我嘗試把周圍的一切UI更新代碼catch塊,這工作,但有必要嗎?

所以...什麼是處理這種韌皮方式是什麼?

回答

4

我遇到的問題是當 上下文消失諸如按壓後退按鈕或 活動整理由於某種原因用戶 。 這會導致我的應用程序經常崩潰 。

默認情況下,如果用戶更改屏幕方向,原始活動將被銷燬並創建一個新活動,您也會得到此信息。

我嘗試使用getApplicationContext() (思考,這將是可用的 在我的整個應用程序),但 這個沒有工作,永遠 - 而不是我 應用程序崩潰!

從操縱UI的角度來看,應用程序上下文毫無用處。

所以...什麼是處理這種韌皮方式是什麼?

最後,您需要的是讓您的線程將活動傳遞給正確的活動。人們已經使用的一些技巧包括:

  • 使用監聽器模式(例如,服務管理線程,活動註冊和註銷服務聽衆,線程調用關鍵事件監聽器)
  • 把「當前「在靜態數據成員的活動,其中螺紋用來找出哪一個應該使用的實例(危險由於內存泄漏和失敗,如果您需要多個實例)
  • 限制後臺線程來高速緩存數據的,這活性拉動(例如,經由輪詢)根據需要