1

这是我的代码,当收到推送通知时,我必须在 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 代码。)

日志猫:

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
         }
     }
4

1 回答 1

0

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

于 2013-03-25T09:10:14.753 回答