2015-11-05 149 views
1

我有一個Asynctask,它持續運行以獲得特定時間間隔的地理座標。它的運行直到用戶退出活動,但我有一個暫停按鈕,它將暫停異常和一個恢復按鈕,它將從暫停的位置恢復異步按鈕。那麼該怎麼做。Android中的暫停和還原異步任務

http://i.stack.imgur.com/3SomI.png

+0

您應該使用熔合位置提供程序,它會自動執行所有這些操作。你設置了接收一個新位置的頻率,並且調用簡單的'connect()'和'disconnect()'方法來'暫停'它。 – Breavyn

+1

* Asynctask ...獲得地理座標* ...有趣的是,我wana看到這一點,它必須是非常糟糕的設計(是否有getLastKnownLocation參與?,這不是我們如何獲得coords更新)......回到主題...... ** AsyncTask是用於在背景上做一些工作,返回...不適用於「不定式循環」**所以「暫停AsyncTask」不會使敏感 – Selvin

+0

實際上循環不用於獲取地理座標。其倒數計時器具有循環填充進度條。例如,如果我將計時器設置爲10秒,那麼進度和計時器將倒計時到10秒,然後再下一個10秒,直到用戶退出應用程序。所以我把倒數計時器和進度更新放在aysynctask裏面。所以,現在當我想點擊暫停按鈕時,我想暫停計時器,並從onlocation更改方法獲取動態位置。當我點擊恢復按鈕時,它將從暫停的位置恢復。 –

回答

0

你應該知道的AsyncTask通常用於對於那些需要較長時間才能完成的任務,被認爲是在主線程限制的任務。 這就是爲什麼它用於http連接到服務器的例子。 Iv也讀取了doInBackground無法訪問UI的方法,因此當您從方法內部更新進度條時,它不會工作,您可以從onPreExecute和onProgressUpdate以及onPostExecute方法訪問UI。

這可能會幫助你理解的AsyncTask是如何工作的: https://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

這: http://www.compiletimeerror.com/2013/01/why-and-how-to-use-asynctask.html#.Vjs3QrcrLcs

0

我曾在同一同上應用工作了一個客戶幾個月前。異步任務是一個非常糟糕的想法,以獲得loacation;確實是一個非常糟糕的實現。

我用下列方式:
-1創建我自己的LocationListener的
-2創建我自己的服務,只要我有我的上下文註冊到LocationListener的得到這個LocationListener的的保持和不斷返回LatLng或將它們保存在背景中。我不得不上傳到服務器。
-3刪除服務中LocationListener的更新並在完成時查殺服務。
-4需要時重複。

讓我知道你是否仍然需要詳細的代碼。

PS Read this about Async Task如果您仍然繼續您的實施。