У меня есть Mainactivity, где я использовал несколько фрагментов, которые извлекают изображения и текст, когда он-лайн в формате json, а также сохраняет и обновляет информацию, когда устройство находится в автономном режиме, оно отображает те же самые сохраненные данные.
Проблема заключается в том, когда япроводите между фрагментами, когда онлайн каждый раз, когда он начинает получать данные из онлайн, и это занимает много времени.Так что это раздражает.Я ищу решение, которое, когда приложение открыто, тогда только ищет онлайн данные и затем показывает Данные из сохраненной базы данных.
Ниже мой код
public class technology extends Fragment implements techTAdapter.FlowerClickListener, techTFetchListener {
private techTManager mManager;
private techTAdapter mFlowerAdapter;
private techTDatabase mDatabase;
private Button mReload;
private ProgressDialog mDialog;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
loadFlowerFeed();
return view;
}
private void loadFlowerFeed() {
mDialog = new ProgressDialog(getActivity());
mDialog.setMessage("Loading information..");
mDialog.setCancelable(true);
mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mDialog.setIndeterminate(true);
mFlowerAdapter.reset();
mDialog.show();
if (getNetworkAvailability()) {
getFeed();
} else {
getFeedFromDatabase();
}
}
private void getFeedFromDatabase() {
mDatabase.fetchFlowers(this);
}
public void getFeed() {
Call<List<techT>> listCall = mManager.getFlowerService().getAllFlowers();
listCall.enqueue(new Callback<List<techT>>() {
@Override
public void onResponse(Call<List<techT>> call, Response<List<techT>> response) {
if (response.isSuccessful()) {
List<techT> flowerList = response.body();
for (int i = 0; i < flowerList.size(); i++) {
techT flower = flowerList.get(i);
technology.SaveIntoDatabase task = new technology.SaveIntoDatabase();
task.execute(flower);
mFlowerAdapter.addFlower(flower);
}
} else {
int sc = response.code();
switch (sc) {
case 400:
Log.e("Error 400", "Bad Request");
break;
case 404:
Log.e("Error 404", "Not Found");
break;
default:
Log.e("Error", "Generic Error");
}
}
mDialog.dismiss();
}
@Override
public void onFailure(Call<List<techT>> call, Throwable t) {
mDialog.dismiss();
Toast.makeText(getActivity(), t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
public class SaveIntoDatabase extends AsyncTask<techT, Void, Void> {
private final String TAG = technology.SaveIntoDatabase.class.getSimpleName();
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(techT... params) {
techT flower = params[0];
try {
InputStream stream = new URL(techTConstant.HTTP.BASE_URL + "/photos/" + flower.getPhoto()).openStream();
Bitmap bitmap = BitmapFactory.decodeStream(stream);
flower.setPicture(bitmap);
mDatabase.addFlower(flower);
} catch (Exception e) {
Log.d(TAG, e.getMessage());
}
return null;
}
}
}
и заранее спасибо.Дайте мне знать, если вам нужна дополнительная информация.