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コードを実行します。)

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

1 に答える 1

0

プッシュ通知のonMessageメソッドからAsyncTaskを使用するべきではないと思います。http接続を行うサービスを呼び出す必要があります。また、UIスレッドでのみ実行されるため、Serviceクラスを使用している場合は、別のスレッドを使用することを忘れないでください。これがお役に立てば幸いです。

于 2013-03-25T09:10:14.753 に答える