Android 此代码中如何发生活动泄漏
通过将活动对象传递给AsyncTask的构造函数。有可能吗 活动泄漏。如果是这样的话,那么它是如何发生的,请任何人解释一下。以及如何避免活动发生泄漏Android 此代码中如何发生活动泄漏,android,android-activity,android-asynctask,Android,Android Activity,Android Asynctask,通过将活动对象传递给AsyncTask的构造函数。有可能吗 活动泄漏。如果是这样的话,那么它是如何发生的,请任何人解释一下。以及如何避免活动发生泄漏 public class RemoteLoader extends AsyncTask<Void, Void, Void> { private Activity activity; public RemoteLoader(Activity context){ this.activity = context
public class RemoteLoader extends AsyncTask<Void, Void, Void> {
private Activity activity;
public RemoteLoader(Activity context){
this.activity = context;
}
@Override
protected Void doInBackground(Void... Pages) {
// do in bg
}
@Override
protected void onPostExecute(Void result) {
// Set title into TextView
TextView txttitle = (TextView)activity.findViewById(R.id.txtProtip);
txttitle.setText(protip);
}
}
公共类RemoteLoader扩展异步任务{
私人活动;
公共远程加载程序(活动上下文){
这个活动=上下文;
}
@凌驾
受保护的Void doInBackground(Void…页){
//在背景中做什么
}
@凌驾
受保护的void onPostExecute(void结果){
//将标题设置为文本视图
TextView txttitle=(TextView)activity.findViewById(R.id.txtProtip);
txttitle.setText(protip);
}
}
尝试在异步任务中对您的活动进行弱引用。完成后,检查活动是否仍然存在 AsyncTask保留对活动的引用,因此活动
实例在AsyncTask
处于活动/运行状态时不能垃圾收集
在某些情况下,例如方向更改,不再需要“旧的”活动
实例,因为框架创建了另一个活动
实例。在这种情况下,如果您的AsyncTask
保留了对活动
实例的强引用,则会出现内存泄漏
要避免此问题,请按如下方式使用WeakReference
:
public class RemoteLoader extends AsyncTask<Void, Void, Void>{
private WeakReference<Activity> activity;
public RemoteLoader(Activity context){
this.activity = new WeakReference<Activity>(context);
}
...
...
}
公共类RemoteLoader扩展异步任务{
私人弱点参考。在asynctask运行时尝试更改方向。有什么办法可以避免吗Raghundan先生:)请阅读以下内容:你有什么例子吗非常感谢。我知道了。感谢你的帮助:)