簡體   English   中英

根Droid上的AsyncTask問題

[英]Problem with AsyncTask on rooted Droid

我在Android市場上有一個名為DigiClock的小部件,在最近一次更新后,我對根植的Motorola Droids遇到了一些極為罕見和隨機的問題(可能還有其他手機有問題,但唯一的回答是“ ve來自具有root權限的droid用戶)。 啟動運行AsyncTask的活動時會出現問題,該活動會在顯示ProgressDialog(水平樣式)的同時從設備中檢索所有已安裝的應用程序。 可在此處找到適用的Java代碼文件:

http://code.google.com/p/android-digiclockwidget/source/browse/trunk/src/com/davidgoemans/simpleClockWidget/LauncherChooser.java

如果您希望區分在工作版本和非工作版本之間所做的更改,可以在這里找到:

http://code.google.com/p/android-digiclockwidget/source/diff?spec=svn10&old=7&r=9&format=side&path=/trunk/src/com/davidgoemans/simpleClockWidget/LauncherChooser.java

機器人上似乎發生了什么:*進度框彈出*進度框在完成運行前關閉*空列表顯示

似乎獲取應用程序的AsyncTask被殺死了。 這可能嗎?

謝謝大衛

編輯

發現了問題,原來是在Android 2.0中(不是2.1或1.6)

列出軟件包= getPackageManager()。getInstalledPackages(PackageManager.GET_ACTIVITIES);

在我的情況下崩潰,但是

列出軟件包= getPackageManager()。getInstalledPackages(0);

沒有。

我不確定是否是症狀的原因,但是我可以看到一些代碼問題:

  • 您不得從除主UI線程之外的任何線程中操作諸如ProgressDialog之類的UI對象,因為UI對象不是線程安全的。 而不是調用progressDialog.setProgress(),而是調用AsyncTask.publishProgress(),然后重寫AsyncTask.onProgressUpdate()。

http://developer.android.com/resources/articles/painless-threading.html

  • 此外,您的代碼也不會阻止兩個線程同時訪問“ menuEntries”。 解決此問題的最簡單方法是將對setListAdapter()的調用從onCreate()移到onPostExecute()。

找到了問題 ,原來是在Android 2.0中(不是2.1或1.6)

List packages = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

在我的情況下崩潰,但是

List packages = getPackageManager().getInstalledPackages(0);

沒有。 我通過在2.0模擬器中進行測試發現了這一點。 這增加了必須立即在1.5、1.6、2.0和2.1上測試我的應用程序的痛苦,而不僅僅是邊緣情況:/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM