1

保留中のインテントを介してバンドルを使用して、サービスからアクティビティにいくつかの値を渡そうとしています。アプリが開始されたばかりの場合はすべて正常に動作しますが、アプリが再開モードの場合、サービスはリモート サーバーから新しい値を受け取り、保留中のインテントに入れてアクティビティに渡しますが、アクティビティには古い値が表示されます。サービス側のコードは次のとおりです。

    private void sendNotification(String wholemsg) {
    mNotificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);



    Intent notificationIntent = new Intent(this, MainActivity.class);
    notificationIntent.setAction(Intent.ACTION_MAIN);
    notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    /* Do something to extract salesID and notificationmessage from wholemsg
    ....
    ....
    ....
    salesID=....
    notificationmessage=...
    ....
    */


    Bundle bundle=new Bundle();
    bundle.putString("msg", notificationmessage);
    bundle.putString("strsalesID", salesID);    

    notificationIntent.replaceExtras(bundle);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            notificationIntent,        PendingIntent.FLAG_ONE_SHOT+PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this)

    .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("AppV001 Notification")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(notificationmessage))
            .setContentText(notificationmessage);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

}

そして、これは私のアクティビティの onRestart メソッドです:

           @Override
        protected void onRestart() {

    super.onRestart();


    NotificationManager mNotificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.cancel(1);
    try {

        Intent intent = getIntent();
        if (intent.hasExtra("msg") && intent.hasExtra("strsalesID")) {
            String strmsgtitle = intent.getStringExtra("msg");
            salesID = intent.getStringExtra("strsalesID");
            titletext.setText(getString(R.string.str_ettitle) + salesID);
        } 
    } catch (Exception ex) {
        return;
    }

}

問題は、アプリが非表示モードから戻ったときに salesID が以前の値を保持していることです。非表示になっている間、サービスはアクティビティのバンドルを変更できないようです。

お時間をいただきありがとうございます。

4

1 に答える 1