在Android应用程序中,我有一些片段在启动应用程序时从网站上加载图像。当我启动应用程序时,一切都会正常工作,即使我最小化并突然最大化应用程序它也能正常工作。但如果我最小化应用程序超过半小时然后,如果我最大化的应用程序,它将不会从片段中的网络加载任何图像。我如何克服这一点,并设法加载图像,即使在恢复应用程序后?
public class FirstFragment extends Fragment implements RecyclerViewOnClickListenerHack {
protected RecyclerView mRecyclerView;
protected List<Data> mList;
protected Activity mActivity;
protected ProgressBar mPbLoad;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_pics, container, false);
mList = new ArrayList<>();
mPbLoad = (ProgressBar) view.findViewById(R.id.pbar_load);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyle_list);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager linear = (LinearLayoutManager) mRecyclerView.getLayoutManager();
if (mList.size() == linear.findLastCompletelyVisibleItemPosition() + 1
&& (mSwipeRefreshLayout == null || !mSwipeRefreshLayout.isRefreshing())) {
//Using Volley NetworkConnection.getInstance(getActivity()).execute(FirstFragment.this, FirstFragment.class.getName());
}
}
});
mRecyclerView.addOnItemTouchListener(new RecyclerViewTouchListener(getActivity(), mRecyclerView, this));
LinearLayoutManager linear = new LinearLayoutManager(getActivity());
linear.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(linear);
MyAdapter adapter = new MyAdapter(getActivity(), mList);
mRecyclerView.setAdapter(adapter);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(savedInstanceState != null) {
mList = savedInstanceState.getParcelableArrayList("mList");
if( mList == null || mList.size() == 0 ){
NetworkConnection.getInstance(getActivity()).execute(this, FirstFragment.class.getName());
}
}
else{
NetworkConnection.getInstance(getActivity()).execute(this, FirstFragment.class.getName());
}
}
@Override
public void onClickListener(View view, int position) {
//some piece of code
}
@Override
public void onLongPressClickListener(View view, int position) {
}
private static class RecyclerViewTouchListener implements RecyclerView.OnItemTouchListener {
//some piece of code
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putParcelableArrayList("mList", (ArrayList<Movie>) mList);
super.onSaveInstanceState(outState);
}
@Override
public void onStop() {
super.onStop();
NetworkConnection.getInstance(getActivity()).getRequestQueue().cancelAll(FirstFragment.class.getName());
}
@Override
public void onResume() {
super.onResume();
}
@Override
public WrapToNetwork doBefore() {
mPbLoad.setVisibility( View.VISIBLE );
if( Utility.verifyConnection(getActivity()) ){
Data data = new Data();
data.setCat(0);
if( mList != null && mList.size() > 0 ){
data.setId( mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing() ? mList.get(0).getId() : mList.get(mList.size() - 1).getId() );
}
return( new WrapToNetwork(data, "get-data", (mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing()) ) );
}
return null;
}
@Override
public void doAfter(JSONArray jsonArray) {
mPbLoad.setVisibility(View.GONE);
if( jsonArray != null ){
MyAdapter adapter = (MyAdapter) mRecyclerView.getAdapter();
Gson gson = new Gson();
int auxPosition = 0, position;
if( mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing() ){
mSwipeRefreshLayout.setRefreshing(false);
auxPosition = 1;
}
try{
for(int i = 0, j = jsonArray.length(); i < j; i++){
Data data = gson.fromJson( jsonArray.getJSONObject( i ).toString(), Data.class );
position = auxPosition == 0 ? mList.size() : 0;
adapter.addListItem(data, position);
if( auxPosition == 1 ){
mRecyclerView.getLayoutManager().smoothScrollToPosition(mRecyclerView, null, position);
}
}
}
catch(JSONException e){
Log.i(TAG, "doAfter(): "+e.getMessage());
}
}
else{
Toast.makeText(getActivity(), "Please Try Later", Toast.LENGTH_LONG).show();
}
}
}