Java 处理AsyncTask警告类应该是静态的,否则可能会发生泄漏

Java 处理AsyncTask警告类应该是静态的,否则可能会发生泄漏,java,android,android-asynctask,Java,Android,Android Asynctask,我创建了asynctask将数据上传到服务器,如下所示。但它显示了这一警告。 此AsyncTask类应该是静态的,否则可能会发生泄漏。。。。。。 我已经阅读并尝试了弱引用样式,但是我不能集成到这段代码中。 如何在下面的代码中消除此警告 public void ImageUploadToServerFunction(){ final String imageName1 = GetImageNameEditText1.trim(); final String use

我创建了asynctask将数据上传到服务器,如下所示。但它显示了这一警告。 此AsyncTask类应该是静态的,否则可能会发生泄漏。。。。。。 我已经阅读并尝试了弱引用样式,但是我不能集成到这段代码中。 如何在下面的代码中消除此警告

 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一路创建了一个警告。