onPostExecute从未在GCMBaseIntentService中调用

时间:2013-08-29 11:22:54

标签: android android-asynctask google-cloud-messaging

我有GCMIntentService,以便为我的应用程序实现GCM消息传递。其他我的Apps项目中的相同代码工作正常,但在这个新项目中,设备正确注册,我得到regId等等...在这个类中我想向当前登录的用户注册de device token,for我使用AsyncTask通过Ksoap2调用我的webService。

调用webServices的方法工作正常但是onPostExecute永远不会被调用但是doInBackground返回我用来知道方法是否正常工作的字符串值或者我得到任何服务器错误...

几个小时后,我认为问题不在于方法,这种行为发生在我执行的任何AsyncTask中,如下所示:

    private void registroServidor()
{
    url = getUrl();     
    class preprueba extends AsyncTask<String, Void, String> {
        @Override
         protected String doInBackground(String... urls) {
             return "hola";
         }

         protected void onPostExecute(String result) {
             // set image for ImageView
            String hola = "hola";
            Log.i(hola,hola);
         }
     }
    preprueba pp = new preprueba();
    pp.execute();
}

当我从onRegistered调用registroServidor时返回“hola”在调试视图中运行但从不执行onPostExecute ...

有人知道这是什么问题吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

正如我在上一篇评论中所说,问题是在Android 2.3(API 10或更低版本)中,当您在IntentService(如GCMBaseIntentService)中使用时,AsyncTask无法正常工作。

此问题在此link中解释。为此,解决方案是使用IntentService中的AsyncTask。