「doInBackground」と呼ばれる関数を使用する GCM の Android チュートリアルに従っていますが、この関数は次のように定義されています。
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, Void, String>
、その前に置きます。これにより、doInBackground に入力として VOid を持たせたいことがコンパイラに伝えられます。しかし、<Void, Void, String>
「new AsyncTask()」の前に置くと、次のようになります。
private void registerInBackground() {
new AsyncTask() <Void, Void, String>{
コンパイラ エラーが発生します。
Syntax error on tokens, delete these tokens