Android 此代码中如何发生活动泄漏

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

通过将活动对象传递给AsyncTask的构造函数。有可能吗 活动泄漏。如果是这样的话,那么它是如何发生的,请任何人解释一下。以及如何避免活动发生泄漏

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先生:)请阅读以下内容:你有什么例子吗非常感谢。我知道了。感谢你的帮助:)