最佳實(shí)踐:方向更改期AsyncTask 在另一個(gè)線(xiàn)程中運(yùn)行復(fù)雜任務(wù)是一件好事。但是當(dāng)AsyncTask仍在運(yùn)行時(shí)有方向更改或其他配置更改時(shí),將Activity消除并重新啟動(dòng)當(dāng)前電流。并且當(dāng)實(shí)例AsyncTask連接到該活動(dòng)時(shí),它會(huì)失敗并導(dǎo)致“強(qiáng)制關(guān)閉”消息窗口。所以,我正在尋找某種“最佳實(shí)踐”來(lái)避免這些錯(cuò)誤并防止AsyncTask失敗。到目前為止我看到的是:禁用方向更改。(當(dāng)然不是你應(yīng)該如何處理它。)讓任務(wù)存活并通過(guò)新的活動(dòng)實(shí)例更新它 onRetainNonConfigurationInstance只需在銷(xiāo)毀時(shí)取消任務(wù),Activity并Activity在再次創(chuàng)建時(shí)重新啟動(dòng)它。將任務(wù)綁定到應(yīng)用程序類(lèi)而不是活動(dòng)實(shí)例。“shelf”項(xiàng)目中使用的一些方法(通過(guò)onRestoreInstanceState)一些代碼示例:屏幕旋轉(zhuǎn)期間的Android AsyncTasks,第一部分和第二部分ShelvesActivity.java你能幫我找到最好的方法來(lái)解決問(wèn)題并且易于實(shí)現(xiàn)嗎?代碼本身也很重要,因?yàn)槲也恢廊绾握_解決這個(gè)問(wèn)題。
3 回答

慕斯王
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
千萬(wàn)不要使用android:configChanges
來(lái)解決這個(gè)問(wèn)題。這是非常糟糕的做法。
千萬(wàn)不要使用Activity#onRetainNonConfigurationInstance()
兩種。這種模塊化程度較低,不適合Fragment
基于應(yīng)用程序。
您可以閱讀我的文章,描述如何使用保留的Fragment
s 處理配置更改。它解決了保持AsyncTask
旋轉(zhuǎn)變化很好的問(wèn)題。你基本上需要托管AsyncTask
里面Fragment
,叫setRetainInstance(true)
上Fragment
,報(bào)告AsyncTask
的進(jìn)度/結(jié)果返回給它Activity
通過(guò)保留Fragment
。
- 3 回答
- 0 關(guān)注
- 362 瀏覽
添加回答
舉報(bào)
0/150
提交
取消