在将应用程序最小化一段时间后,片段将为空白

时间:2015-09-07 15:50:38

标签: android android-fragments android-activity

在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();

    }
}


}

0 个答案:

没有答案