gpt4 book ai didi

java - 在 Activity 之间导航时如何保留数据而不加载数据

转载 作者:行者123 更新时间:2023-12-02 09:26:07 24 4
gpt4 key购买 nike

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

当我从此 CardActivity 返回时,数据将再次加载。我也尝试了 onPause() 方法,但运气不佳。如何防止在 Activity 之间导航时加载数据。

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

我正在使用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的缓存是如何实现的,可以引用this link

另一种方法是将数据作为对象在 Activity 之间传递。如果数据在 Activity 转换期间不太可能发生更改,我认为这是一个好主意。这样,就不用每次都从网络加载数据了。因此,一旦在 MainActivity 中读取数据,就可以将其作为对象或 Intent 传递给 CardActivity

关于java - 在 Activity 之间导航时如何保留数据而不加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com