我跟随一个关于GCM的android教程,该教程使用了一个名为“doInBackground”的函数,并且它们具有如下定义的函数:

private void registerInBackground() {
    new AsyncTask() {
        @Override
        protected String doInBackground(Void... params) {
            //do stuff
        }
        @Override
        protected void onPostExecute(String msg) {
            //do stuff
        }
    }.execute(null, null, null);
}

但是当我将自己的代码粘贴到eclipse中时,它提示并说我没有实现doInBackground。这是因为它期望doInBackground的输入参数为“Object”,并且由于其输入参数为空,因此无法识别所定义的参数。现在,如果我将异步任务声明为一个类,则将<Void, Void, String>放在它的前面,这将告诉编译器我希望我的doInBackground具有VOid作为输入。但是当我这样将<Void, Void, String>放在“new AsyncTask()”之前时:
    private void registerInBackground() {
    new AsyncTask() <Void, Void, String>{

我收到编译器错误:
Syntax error on tokens, delete these tokens

最佳答案

您应该在参数类型spec之后输入():

new AsyncTask<Void, Void, String>() { /*Your code(e.g. doInBackground )*/ }.execute();

10-07 19:23
查看更多