我有一個長時間運行的後臺任務,涉及大量計算和磁盤讀取。Android AsyncTask USB調試和standadlone設備運行時間差
當我的nexus 5連接到我的筆記本電腦與USB調試後臺任務的總運行時間約。 7分鐘。
當我單獨在設備上運行它時,沒有連接,它可能需要長達1小時。檢查logcat顯示它正在被阻塞的各種間隔。
我認爲這部分是由於調度,所以我試圖強制使用andorid.os.Process異步任務的優先級,確保它並行使用task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR),我也嘗試使用Java線程,但是我得到了相同的結果。
我錯過了關於USB調試和運行aynctask的東西嗎?如果我開始在手機上運行我的應用程序,然後插入USB以查看logcat,我可能會發現它之前已被阻止,但會以正常速度運行。我的處理相當密集,但我需要儘快完成。有沒有辦法做到這一點?我目前正在使用IntentService進行測試,但希望先獲得一些建議。
所以我的問題是:
有USB調試和單獨在設備上運行時,我的異步任務被封鎖,但不是當它在運行僅在設備上調度方面運行之間的差異裝有USB調試的設備?其次,如何確保我的後臺任務能夠以最少的中斷運行,還是有更好的方法在主線程運行7分鐘的長時間計算任務?
這不是一個android問題。這是一個糟糕的設計的例子。請問一個關於lazyloader的問題。 – danny117
我正在使用一種懶惰的加載程序模式來確保我沒有閒置的對象。當時需要堆上的所有東西,這是一個複雜的圖像處理系統,需要很長的處理時間。我設法使用intentservice來實現這個工作,但我仍然想知道爲什麼當手機插入我的筆記本電腦時沒有計劃問題。我沒有看到你的評論是如何有用的,請閱讀這個問題。 –