আমার MainActicity
শুরু RefreshService
একটি সঙ্গে Intent
যা হয়েছে boolean
অতিরিক্ত নামক isNextWeek
।
আমার এমন RefreshService
একটি তৈরি হয় Notification
যা MainActivity
যখন ব্যবহারকারী এটিতে ক্লিক করে তখন আমার শুরু হয়।
এটি দেখতে এরকম দেখাচ্ছে:
Log.d("Refresh", "RefreshService got: isNextWeek: " + String.valueOf(isNextWeek));
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.putExtra(MainActivity.IS_NEXT_WEEK, isNextWeek);
Log.d("Refresh", "RefreshService put in Intent: isNextWeek: " + String.valueOf(notificationIntent.getBooleanExtra(MainActivity.IS_NEXT_WEEK,false)));
pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
builder = new NotificationCompat.Builder(this).setContentTitle("Title").setContentText("ContentText").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent);
notification = builder.build();
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(NOTIFICATION_REFRESH, notification);
যেহেতু আপনি দেখতে পারেন notificationIntent
থাকা উচিত boolean
অতিরিক্ত IS_NEXT_WEEK
মূল্যের সঙ্গে isNextWeek
যা রাখা হয় PendingIntent
।
আমি এখন এটি ক্লিক করলে আমি Notification
সর্বদা এর false
মান হিসাবে পাইisNextWeek
এইভাবে আমি এর মধ্যে মূল্য পাই MainActivity
:
isNextWeek = getIntent().getBooleanExtra(IS_NEXT_WEEK, false);
লগইন করুন:
08-04 00:19:32.500 13367-13367/de.MayerhoferSimon.Vertretungsplan D/Refresh: MainActivity sent: isNextWeek: true
08-04 00:19:32.510 13367-13573/de.MayerhoferSimon.Vertretungsplan D/Refresh: RefreshService got: isNextWeek: true
08-04 00:19:32.510 13367-13573/de.MayerhoferSimon.Vertretungsplan D/Refresh: RefreshService put in Intent: isNextWeek: true
08-04 00:19:41.990 13367-13367/de.MayerhoferSimon.Vertretungsplan D/Refresh: MainActivity.onCreate got: isNextWeek: false
আমি যখন সরাসরি এইরূপে N নেক্সটভ্যালু` MainActivity
দিয়ে একটি শুরু করি Intent
:
Intent i = new Intent(this, MainActivity.class);
i.putExtra(IS_NEXT_WEEK, isNextWeek);
finish();
startActivity(i);
সবকিছু ঠিক কাজ করে এবং আমি পেতে true
যখন isNextWeek
হয় true
।
আমি কী ভুল করব যে সর্বদা একটি false
মান আছে?
হালনাগাদ
এটি সমস্যার সমাধান করে: https://stackoverflow.com/a/18049676/2180161
উদ্ধৃতি:
আমার সন্দেহটি হ'ল, যেহেতু ইন্টেন্টে পরিবর্তিত হওয়া কেবলমাত্র অতিরিক্ত জিনিস,
PendingIntent.getActivity(...)
কারখানা পদ্ধতিটি পুরানো অভিপ্রায়টিকে কেবল অপ্টিমাইজেশন হিসাবে পুনরায় ব্যবহার করে।রিফ্রেশ সার্ভিসে, চেষ্টা করুন:
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
দেখা:
http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT
আপডেট 2
কেন ব্যবহার করা ভাল তা নীচে উত্তর দেখুন PendingIntent.FLAG_UPDATE_CURRENT
।