Je sauvegarde les données du serveur dans la base de données locale dans un AsyncLoader (méthode onLoadFinished à l'intérieur je commence l'activité suivante où je veux afficher les données sauvegardées), mais la base de données est vide Lorsque de nouvelles données sont ajoutées (je veux dire, cela fonctionne bien avec les enregistrements de base de données existants), comment puis-je résoudre ce problème?Loader traite les données même après onLoadFinished
Activité
public class LoadingActivity extends AppCompatActivity implements android.app.LoaderManager.LoaderCallbacks<ArrayList> {
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.laoding_activity);
context = this;
Bundle bundle = new Bundle();
getLoaderManager().initLoader(0, bundle, this).forceLoad();
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(Utils.MANUAL_START_RECIEVER);
sendBroadcast(broadcastIntent);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public android.content.Loader<ArrayList> onCreateLoader(int id, Bundle args) {
DatabaseWorker loader= null;
args.putString(Utils.INTENT_SERVICE_INVOKE,Utils.LOAD_All_DATA);
loader = new DatabaseWorker(this,args);
return loader;
}
@Override
public void onLoadFinished(android.content.Loader<ArrayList> loader, ArrayList data) {
Log.e("adad",App.session.getActionsGreenDao().loadAll().size()+"");
startActivity(new Intent(this,MainActivity.class));
}
@Override
public void onLoaderReset(android.content.Loader<ArrayList> loader) {
}
}
loadInBackground
@Override
public ArrayList loadInBackground() {
Log.e("loader created","loading");
switch (command) {
case Utils.LOAD_All_DATA: {
saveActivities();
savePersons();
savePictureData();
return new ArrayList();
}
case Utils.READ_ACTIONS_DATA: {
readActionData();
return (ArrayList) Action.listAll(Action.class);
}
case Utils.READ_PERSONS_DATA: {
readPersonsData();
return (ArrayList) Person.listAll(Person.class);
}
default:{
return new ArrayList();
}
}
}
J'utilise GreenDAO, je suis l'enregistrement des données à l'intérieur asyncLoader, quand il est enregistré Loader commence onLoadFinished et ISIDE il je commence theat activité voir actuellement les données (je lis la base de données également à l'aide AsyncLoader) donc votre cas est presque impossible. – Turbozanik