gpt4 book ai didi

java - 如何将上下文传递给 AsyncTask?

转载 作者:IT老高 更新时间:2023-10-28 21:03:38 25 4
gpt4 key购买 nike

如何在 Async Task 类中传递上下文,该类是在 Main Activity 不同的 java 文件中编码的,但它是从 main Activity 调用的?

下面是我的代码:

 @Override

protected void onPostExecute(List<Movie_ModelClass> result) {
super.onPostExecute(result);

if (result != null) {
Movie_Adapter movieAdapter = new Movie_Adapter(new MainActivity().getApplicationContext() , R.layout.custom_row, result);
MainActivity ovj_main = new MainActivity();
ovj_main.lv_main.setAdapter(movieAdapter);
} else {
Toast.makeText(new MainActivity().getApplicationContext() ,"No Data Found", Toast.LENGTH_LONG);

}
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}

最佳答案

您可以将 Context 实例作为构造函数参数传递(并为其保留 WeakReference 以避免内存泄漏)。

例如:

public class ExampleAsyncTask extends AsyncTask {
private WeakReference<Context> contextRef;

public ExampleAsyncTask(Context context) {
contextRef = new WeakReference<>(context);
}

@Override
protected Object doInBackground(Object[] params) {
// ...
}

@Override
protected void onPostExecute(Object result) {
Context context = contextRef.get();
if (context != null) {
// do whatever you'd like with context
}
}
}

以及执行:

new ExampleAsyncTask(aContextInstance).execute();

关于java - 如何将上下文传递给 AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37531862/

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