使用Asynctask进行GCM注册时出错

时间:2013-05-26 18:10:46

标签: android

我正在使用开发人员网站上的相同代码但在编译时遇到错误。 http://developer.android.com/google/gcm/gs.html

复制下面的代码

private void registerBackground() {
new AsyncTask() {
    @Override
    protected String doInBackground(Void... params) {
        String msg = "";
        try {
            regid = gcm.register(GCM_SENDER_ID);
            msg = "Device registered, registration id=" + regid;

            // You should send the registration ID to your server over HTTP, 
            // so it can use GCM/HTTP or CCS to send messages to your app.

            // For this demo: we don't need to send it because the device  
            // will send upstream messages to a server that will echo back 
            // the message using the 'from' address in the message. 

            // Save the regid for future use - no need to register again.
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString(PROPERTY_REG_ID, regid);
            editor.commit();
        } catch (IOException ex) {
            msg = "Error :" + ex.getMessage();
        }
        return msg;
    }
    // Once registration is done, display the registration status
    // string in the Activity's UI.
    @Override
    protected void onPostExecute(String msg) {
        mDisplay.append(msg + "\n");
    }
}.execute(null, null, null);
}

我在编译时遇到错误“Asynctask是一个原始类型。对泛型类型的引用应该是parameterised。

1 个答案:

答案 0 :(得分:9)

您尚未声明泛型类型参数。

变化

new AsyncTask() {

new AsyncTask<Void,Void,String>() {

此外,

execute(null, null, null);

可以更改为

execute();