【发布时间】:2016-05-04 13:09:26
【问题描述】:
我找到了一些关于 onDestroy 和 finish 之间区别的答案。
Finish 将从堆栈中删除活动,但不会释放 内存并且不会每次都调用 onDestroy。 onDestroy 将终止活动并释放内存。
在我的情况下: 有2个活动。 A 是主要活动,B 是带有一些 EditText 的活动,用于使用 Volley 将数据发送到服务器。
A -> B -> A
当我成功发送数据时,它会运行finish()来杀死B。 B被破坏。但我再次调用 B,所有数据仍然存在(EditText 的内容)。表示内存还没有清除。
有人遇到过这些问题吗? 有我的代码:
public void update(final Context context, final Map<String,String> data,final Activity activity){//pass B
RequestQueue queue = Volley.newRequestQueue(context);
String url = "http://xxxxxxxx";
StringRequest sr = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
activity.finish();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//mPostCommentResponse.requestEndedWithError(error);
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = data;
//data.
//params.put("user",data.get(''));
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type","application/x-www-form-urlencoded");
return params;
}
};
queue.add(sr);
}
更新
Activity B 通过使用 FragmentStatePagerAdapter 拥有 viewpager 和 3 个片段。 当我调用 B 的 finish() 时,片段下的那些数据不会清除。当我再次启动 B 活动时,我可以看到旧数据。
【问题讨论】:
-
你怎么叫更新?
-
我将 update() 放入帮助类,当我按下按钮时将 B 传递给 update()。所以我在发送数据后调用 B.finish()