我跟随一个关于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();