我有一個AsyncTaskLoader
長時間運行的任務,當加載程序正在運行時,由於方向更改導致我的活動被破壞,因此不會調用onLoadFinished
回調。AsyncTaskLoader:onLoadFinished在方向更改後不會調用
我能以某種方式'重新加載'到我的新活動/它的回調?
這是我(簡化)活動:
public class DashboardActivity extends BaseActivity {
StartupCallback startupCallback;
boolean loading = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty_viewpager);
startupCallback = new StartupCallback();
if (!loading){
getSupportLoaderManager().initLoader(GlobalApp.giveId(), null,
startupCallback);
loading = true;
}
}
private class StartupCallback implements
LoaderManager.LoaderCallbacks<Boolean> {
@Override
public void onLoadFinished(Loader<Boolean> loader, Boolean succ) {
Log.d("LOG", "onLoadFinished");
}
@Override
public Loader<Boolean> onCreateLoader(int id, Bundle args) {
return new StartupLoader(getApplicationContext());
}
@Override
public void onLoaderReset(Loader<Boolean> loader) {
}
}
}
我不能只是開始另一個裝載有一個新的回調,因爲加載程序數據庫的東西和2名裝填手在同一個數據庫上工作會崩潰的應用程序。
我認爲你的問題是重新開始活動。默認情況下,android在您更改方向時重新創建活動。爲了防止這添加有關android:configChanges在這裏閱讀:http://developer.android.com/guide/topics/manifest/activity-element.html – 2013-05-08 12:17:59
謝謝,但正如你所說,這是默認行爲,我不想更改;停止活動從重新開始取向變化可能會在這裏工作,但在其他地方可能會遇到同樣的問題。 – FWeigl 2013-05-08 12:23:21
你的新的StartupLoader的外觀如何?碼? – drdrej 2014-07-30 19:11:37