Java 处理AsyncTask警告类应该是静态的,否则可能会发生泄漏
我创建了asynctask将数据上传到服务器,如下所示。但它显示了这一警告。 此AsyncTask类应该是静态的,否则可能会发生泄漏。。。。。。 我已经阅读并尝试了弱引用样式,但是我不能集成到这段代码中。 如何在下面的代码中消除此警告Java 处理AsyncTask警告类应该是静态的,否则可能会发生泄漏,java,android,android-asynctask,Java,Android,Android Asynctask,我创建了asynctask将数据上传到服务器,如下所示。但它显示了这一警告。 此AsyncTask类应该是静态的,否则可能会发生泄漏。。。。。。 我已经阅读并尝试了弱引用样式,但是我不能集成到这段代码中。 如何在下面的代码中消除此警告 public void ImageUploadToServerFunction(){ final String imageName1 = GetImageNameEditText1.trim(); final String use
public void ImageUploadToServerFunction(){
final String imageName1 = GetImageNameEditText1.trim();
final String userName = GetUserName.trim();
final String imageView1 = getStringImage1(bitmap1);
class AsyncTaskUploadClass extends AsyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(UploadActivity.this,"Your Data is Uploading....",false,false);
}
@Override
protected void onPostExecute(String string1) {
super.onPostExecute(string1);
progressDialog.dismiss();
}
@Override
protected String doInBackground(Void... params) {
ImageProcessClass imageProcessClass = new ImageProcessClass();
HashMap<String,String> HashMapParams = new HashMap<>();
HashMapParams.put(ImageName1, imageName1);
HashMapParams.put(UserName, userName);
HashMapParams.put(ImagePath1, imageView1);
return imageProcessClass.ImageHttpRequest(ServerUploadPath, HashMapParams);
}
}
AsyncTaskUploadClass AsyncTaskUploadClassOBJ = new AsyncTaskUploadClass();
AsyncTaskUploadClassOBJ.execute();
}
public void ImageUploadToServerFunction(){
最终字符串imageName1=GetImageNameEditText1.trim();
最终字符串userName=GetUserName.trim();
最终字符串imageView1=getStringImage1(位图1);
类AsyncTaskUploadClass扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=progressDialog.show(UploadActivity.this,“您的数据正在上载…”,false,false);
}
@凌驾
受保护的void onPostExecute(字符串string1){
super.onPostExecute(string1);
progressDialog.disclose();
}
@凌驾
受保护字符串doInBackground(无效…参数){
ImageProcessClass ImageProcessClass=新的ImageProcessClass();
HashMap HashMapParams=新HashMap();
HashMapParams.put(ImageName1,ImageName1);
HashMapParams.put(用户名、用户名);
HashMapParams.put(ImagePath1,imageView1);
返回imageProcessClass.ImageHttpRequest(ServerUploadPath,HashMapParams);
}
}
AsyncTaskUploadClass AsyncTaskUploadClassOBJ=新的AsyncTaskUploadClass();
AsyncTaskUploadClassOBJ.execute();
}
如果在函数的上下文中执行此任务,则需要使异步任务匿名。比如:
public void ImageUploadToServerFunction(){
final String imageName1 = GetImageNameEditText1.trim();
final String userName = GetUserName.trim();
final String imageView1 = getStringImage1(bitmap1);
new AsyncTask<Void,Void,String>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(UploadActivity.this,"Your Data is Uploading....",false,false);
}
@Override
protected void onPostExecute(String string1) {
super.onPostExecute(string1);
progressDialog.dismiss();
}
@Override
protected String doInBackground(Void... params) {
ImageProcessClass imageProcessClass = new ImageProcessClass();
HashMap<String,String> HashMapParams = new HashMap<>();
HashMapParams.put(ImageName1, imageName1);
HashMapParams.put(UserName, userName);
HashMapParams.put(ImagePath1, imageView1);
return imageProcessClass.ImageHttpRequest(ServerUploadPath,HashMapParams);
}
}.execute();
}
public void ImageUploadToServerFunction(){
最终字符串imageName1=GetImageNameEditText1.trim();
最终字符串userName=GetUserName.trim();
最终字符串imageView1=getStringImage1(位图1);
新建异步任务(){
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=progressDialog.show(UploadActivity.this,“您的数据正在上载…”,false,false);
}
@凌驾
受保护的void onPostExecute(字符串string1){
super.onPostExecute(string1);
progressDialog.disclose();
}
@凌驾
受保护字符串doInBackground(无效…参数){
ImageProcessClass ImageProcessClass=新的ImageProcessClass();
HashMap HashMapParams=新HashMap();
HashMapParams.put(ImageName1,ImageName1);
HashMapParams.put(用户名、用户名);
HashMapParams.put(ImagePath1,imageView1);
返回imageProcessClass.ImageHttpRequest(ServerUploadPath,HashMapParams);
}
}.execute();
}
但我强烈建议不要再在Android中使用AsyncTask。这是一种非常肮脏的异步操作方式,理应被弃用。解决这个问题的更好方法是使用。谢谢@Darren Finch。尽管代码从新的AsyncTask一路创建了一个警告。