在onMessage()上收到推送通知时执行一些代码

时间:2013-03-25 08:34:41

标签: php android android-asynctask push-notification android-service

这是我的代码,当收到推送通知时,我必须在AsyncTask中执行一些http请求。 据我所知,如果我需要在推送通知到达时执行某些操作,我必须在OnMessage()方法中执行此操作。 但是,当应用程序收到通知时崩溃并且不执行我需要它执行的操作: 代码:

@Override
protected void onMessage(Context context, Intent intent) {
    Log.i(TAG, "Received message");
    String message = intent.getExtras().getString("price");
    //sends info to the server

    new PostAsyncTask().execute();

    displayMessage(context, message);
    // notifies user
    generateNotification(context, message);
}

非常感谢! (如果你需要整个类只是说它。但是我可以告诉你PostAsyncTask执行一些httpRequest代码。)

logcat的:

http://pastebin.com/LggC0uFq

的AsyncTask: (它只调用一个执行某些http请求的函数)

class PostAsyncTask extends AsyncTask<String, Integer, Boolean> {
     protected Boolean doInBackground(String... params) {
        ReNewCoordinates();
         postData(lat, lon);
            return true;

     }

     protected void onPreExecute() {
         // show progress dialog
     }


         protected void onPostExecute(Long result) {
             // hide  progress dialog
         }
     }

1 个答案:

答案 0 :(得分:0)

我想,你不应该使用推送通知的onMessage方法中的AsyncTask。您应该调用一个执行http连接任务的服务。如果您正在使用Service类,请记住使用单独的线程,因为它仅在UI线程上运行。我希望这会帮助你。