是否可以從Runnable執行AsyncTask?根據我的經驗可以完成,但不安全。當我的應用第一次運行時,我的AsyncTask可以從Runnable中正常運行。但是,當應用程序移動到後臺,然後帶回前面我得到「不能創建處理程序內部沒有調用Looper.prepare()」的線程。從runnable調用asynctask
下面是我想要做的: 我正在使用MapView並在onCreate中調用runOnFirstFix(Runnable)。我的Runnable調用一個AsyncTask來執行一個Web服務調用,它根據位置返回一些數據。 我將應用程序移動到背景(通過點擊主頁按鈕),一段時間後,我再次將應用程序向前移動,並在我調用AsyncTask的execute()時得到異常。
首先,爲什麼runOnFirstFix被再次執行?其次,它爲什麼第二次引發異常? 我猜測有一些我不明白的生命週期部分。
謝謝。
爲什麼你將'AsyncTask'調用封裝到'Runnable'中?它的'doInBackground'方法在後臺線程中運行,在'onPre-'和'onPostExecute'中,您可以操作您在UI線程中聲明的gui和其他東西。另一方面,當你將應用程序放到前臺時,你的'onCreate'方法被調用,這就是爲什麼'runOnFirstFix'再次運行。 – rekaszeru 2011-05-16 05:53:05
我想重用現有的AsyncTask,但我想我可以將該邏輯直接移入Runnable。至於runOnFirstFix的第二次調用,我不相信它是(直接)因爲你陳述的原因,而是因爲我正在onCreate()實例化一個MyLocationOverlay的新實例, – cagreen 2011-05-16 13:33:19