Используя AsyncTask таким образом: «новый AsyncTask () {« дает мне ошибки

Im, следуя инструкциям android по GCM, который использует функцию, называемую 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» и не распознает тот, который определен, потому что его входной параметр является недействительным. Теперь, если бы я объявлял задачу async как класс, я бы поставил перед ним <Void, Void, String> , и это сообщило бы компилятору, что я хочу, чтобы мой doInBackground имел VOid в качестве входных данных. Но когда я помещаю <Void, Void, String> перед «новой AsyncTask ()» как таковой:

  private void registerInBackground() { new AsyncTask() <Void, Void, String>{ 

Я получаю ошибку компилятора:

 Syntax error on tokens, delete these tokens 

Вы должны иметь () после спецификации типа spec:

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

Попробуй это:

 new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground( Void... voids ) { //Do things... return null; } }.execute();