我有一个AsyncTaskLoader
,其中包含一个长时间运行的任务。当我的Activity因方向更改而被销毁时,onLoadFinished
回调函数不会被调用。
我能否将加载器“重新附加”到我的新Activity / 它的回调上?
这是我的(简化后的)Activity:
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) {
}
}
}
我不能只用新的回调函数启动另一个加载程序,因为该加载程序会涉及到数据库操作,两个加载程序同时操作同一数据库会导致应用程序崩溃。