当来自另一个意图时,如何防止再次加载数据。例如,我有一个MainActivity,正在onCreate()方法中对API进行GET调用。我单击其中一张卡,它会触发另一个名为CardActivity的活动。

当我从该CardActivity中回击时,数据再次被加载。我也尝试过onPause()方法,但是没有运气。在活动之间导航时,如何防止加载的数据。

有人可以指导我如何实现这一目标吗?

我正在使用Volley库进行HTTP调用。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        requestQueue = MySingleton.getInstance(this.getApplicationContext()).getRequestQueue();

        getRedditDefaultData();
        getGoogleHeadlinesData();

    }

    private void getRedditDefaultData() {

        final String url = "https://example.com"

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                                ...
                                dataset.add(new StaggeredCustomCard(
                                        redditUserProfilePic,
                                        redditUserName,
                                        redditPostDateTime,
                                        redditPostTitle,
                                        null,
                                        redditPostDescription));
                            }
                            if (dataset != null) {
                              staggeredGridAdapter.notifyDataSetChanged();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // TODO: Handle error
                        progressBar.setVisibility(View.GONE);
                    }
                });
        retryPolicy(jsonObjectRequest);
       MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);
    }
分析解答

这个问题有很多可能的答案。您可以将数据本地存储在SQLite数据库中,然后可以在需要时从那里读取数据。如果您的数据可能会经常更改,那么这不是一个好主意。您可能会考虑使用Volley随附的缓存系统。要了解如何实现Volley缓存,可以参考这个连结

另一种方法是通过在活动之间作为对象传递数据。如果在活动过渡期间数据不太可能更改,那么我认为这是个好主意。这样,您不必每次都从网络加载数据。因此,一旦在MainActivity中读取了数据,就可以将其作为对象或意图传递给CardActivity