Asynctask使用中的警告

时间:2017-03-20 19:25:58

标签: java android android-asynctask

我正在尝试在我的一个Android应用程序中使用asynctask,但它给我这样的警告 未选中要求执行(参数...)'作为原始类型的成员' android.os.AsyncTask'



public class Splash extends AppCompatActivity {

    JSONArray products = null;
    JSONParser jParser = new JSONParser();
    Methods methods;
    AppItem appItem;
    LanguageItem languageItem;
    RoundedImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        imageView = (RoundedImageView)findViewById(R.id.splash);
        Picasso.with(this)
                .load(R.drawable.splashscreen)
                .fit().centerCrop()
                .into(imageView);

        methods = new Methods(this);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                new AsyncServerOnlineCheck().execute();
            }
        },1000);
    }

    public class AsyncServerOnlineCheck extends AsyncTask {
        boolean isReachable;

        @Override
        protected Object doInBackground(Object[] objects) {

            isReachable = NetworkCheck.isReachable(Splash.this);
            return null;
        }

        @Override
        protected void onPostExecute(Object o) {
            super.onPostExecute(o);
            if (isReachable) {
                new loadAppData().execute();
                //Toast.makeText(SplashsActivity.this, "Server is online", Toast.LENGTH_SHORT).show();
            } else {
    connectionerror();
            }
        }
    }


    public void connectionerror() {
       // progressBar.setVisibility(View.GONE);
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(Splash.this);

        alertDialog.setTitle("Connection Error!");

        alertDialog.setMessage("There Some issue to connect Server...Please try again later");

        alertDialog.setPositiveButton("Retry",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();

                        new AsyncServerOnlineCheck().execute();
                    }
                });
        alertDialog.setNegativeButton("Exit",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();

                        Splash.this.finish();
                    }
                });

        alertDialog.show();
    }




我在这个警告中学习了android而且很困惑。我无法解决这个难题。如果有人能纠正我,请告诉我。感谢

2 个答案:

答案 0 :(得分:1)

  

我正在尝试在我的一个Android应用程序中使用asynctask   下面,但它给我这样的警告,如未经检查的电话   'execute(Params ...)'作为原始类型'android.os.AsyncTask'的成员

警告是由AsyncTask的参数引起的。

更改您的课程定义

public class AsyncServerOnlineCheck extends AsyncTask {

}

到此

public class AsyncServerOnlineCheck extends AsyncTask<Object, Void, Object>{

}

From Android Developers:

异步任务使用的三种类型如下:

Params,执行时发送给任务的参数类型。

Progress,后台计算期间发布的进度单元的类型。

Result,后台计算结果的类型。

进一步阅读 - AsyncTask

答案 1 :(得分:0)

定义异步任务时,您没有定义它应该使用的泛型。因此,没有检查传递的变量类型,这意味着如果你有一个bug,你将在运行时崩溃而不是编译失败,这通常更糟。定义3个泛型类型,如public class AsyncServerOnlineCheck extends AsyncTask<Void, Void, Void>或适用于删除警告的任何内容。