Привет Я реализую пользовательский asynctaskloader для загрузки данных в фоновом режиме. Проблема заключается в том, когда пользователь возвращается к активности после того, как он сводит к минимуму приложение (или выбирает фотографию из галереи), все асинхронные загрузчики, связанные с активностью, и асинтетические загрузчики, связанные с фрагментами в действии, начинаются снова и снова.Asynctaskloader перезагружает загрузку при перезапуске активности
Как я могу предотвратить перезагрузку загрузчика после перезагрузки?
Мой baseAsynctaskLoader класс:
import android.content.Context;
импорт android.support.v4.content.AsyncTaskLoader; импорт android.util.Log;
общественного абстрактного класса BaseAsyncTaskLoader простирается AsyncTaskLoader {
private static final String TAG = "BaseAsyncTaskLoader";
protected Context context;
protected Object mData;
public BaseAsyncTaskLoader(Context context) {
super(context);
Log.d(TAG, "BaseLoader");
this.context = context.getApplicationContext();
}
@Override
public abstract Object loadInBackground();
@Override
public void deliverResult(Object data){
Log.d(TAG, "deliverResult");
if (isReset()) {
return;
}
mData = data;
if (isStarted()) {
super.deliverResult(data);
}
}
@Override
protected void onStartLoading(){
Log.d(TAG, "onStartLoading");
if (mData != null) {
deliverResult(mData);
}
if (takeContentChanged() || mData == null) {
forceLoad();
}
}
@Override
protected void onStopLoading(){
Log.d(TAG, "onStopLoading");
cancelLoad();
}
@Override
protected void onReset(){
Log.d(TAG, "onReset");
super.onReset();
onStopLoading();
if(mData !=null){
mData=null;
}
}
@Override
public void onCanceled(Object data){
Log.d(TAG, "onCanceled");
super.onCanceled(data);
}
}
погрузчик Класс образца:
public class AddDetailService extends BaseAsyncTaskLoader{
Activity activity;
Bundle bundle;
String outputstringrespone="";
public AddCarService(Activity activity, Bundle bundle){
super(activity);
this.activity = activity;
this.bundle = bundle;
}
@Override
public Object loadInBackground(){
try{
int userId = bundle.getInt(USER_ID);
int modelId = bundle.getInt(MODEL_ID);
outputstringrespone = addDetails(userId, modelId);
}catch(Exception e){
Log.d(TAG, e.toString());
}
return null;
}
@Override
public void deliverResult(Object data){
super.deliverResult(data);
Log.d(TAG,"output--"+outputstringrespone);
if(outputstringrespone.equalsIgnoreCase("Success")){
Toast.makeText(activity, "Details Added Successfully", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(activity, "Details not added",Toast.LENGTH_SHORT).show();
}
}
}
LoaderCallback активности:
getLoaderManager(). InitLoader (LoaderId.ADD_DETAIL, bundle, addDetailsCallbacks);
LoaderManager.LoaderCallbacks addDetailsCallbacks = new LoaderManager.LoaderCallbacks(){
@Override
public Loader onCreateLoader(int id, Bundle args){
return new AddDetailService(getActivity(), args);
}
@Override
public void onLoadFinished(Loader loader, Object data){
getLoaderManager().destroyLoader(LoaderId.ADD_DETAIL);
}
@Override
public void onLoaderReset(Loader loader){
}
};