I have a really strange problem. I've write a Service with 2 SimpleNotifications called by a Thread, but when i click on them to start the DestinationActiviy i discovered that the received Intent contains the extras of the last Notification clicked.
For example: Step 1) SimpleNotification 2 is called Step 2) SimpleNotification 1 is called Step 3) Click on SimpleNotification 2
Result: DestinationActivity shows: "SimpleNotification1"
Could you tell me why? I'm really surprised about that...
The Service start from a MainActivity:
Using java Syntax Highlighting
- public class LocalServiceTestActivity extends Activity {
- private Intent serviceIntent;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- serviceIntent = new Intent(this,MyLocalService.class);
- }
- public void startLocalService(View button){
- startService(serviceIntent);
- }
- public void stopLocalService(View button){
- stopService(serviceIntent);
- }
- }
Parsed in 0.032 seconds, using GeSHi 1.0.8.4
This is the code of my Service:
Using java Syntax Highlighting
- public class MyLocalService extends Service {
- private final static String LOG_TAG = "MyLocalService";
- private final static int MAX_NOTIFICATION_NUMBER = 10;
- private final static int SIMPLE_NOTIFICATION_ID = 1;
- private NotificationManager notificationManager;
- private BackgroundThread backgroundThread;
- private Notification notification;
- private PendingIntent pIntent;
- private int notificationNumber;
- private PendingIntent pIntent2;
- private Intent intent;
- private Intent intent2;
- @Override
- public void onCreate() {
- super.onCreate();
- backgroundThread = new BackgroundThread();
- backgroundThread.start();
- notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- Log.i(LOG_TAG, "Service Created");
- }
- public void sendNotification1(){
- notification = new Notification(R.drawable.icon,"Simple Notification1", System.currentTimeMillis());
- notification.flags |= Notification.FLAG_AUTO_CANCEL;
- intent = new Intent(this, DestinationActiviy.class);
- intent.putExtra("notificationType", "Simple Notification1");
- pIntent = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
- notificationNumber++;
- notification.number=notificationNumber;
- notification.setLatestEventInfo(this, "Simple Notification1","Simple Notification Extended", pIntent);
- notificationManager.notify(1, notification);
- }
- public void sendNotification2(){
- // Creiamo la Notification
- notification = new Notification(R.drawable.icon,"Simple Notification2", System.currentTimeMillis());
- notification.flags |= Notification.FLAG_AUTO_CANCEL;
- intent2 = new Intent(this, DestinationActiviy.class);
- intent2.putExtra("notificationType", "Simple Notification2");
- pIntent2 = PendingIntent.getActivity(this, 0, intent2,PendingIntent.FLAG_UPDATE_CURRENT);
- notificationNumber++;
- notification.number=notificationNumber;
- notification.setLatestEventInfo(this, "Simple Notification2","Simple Notification Extended", pIntent2);
- notificationManager.notify(2, notification);
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.i(LOG_TAG, "Service Started");
- notificationNumber = 0;
- return super.onStartCommand(intent, flags, startId);
- }
- @Override
- public void onDestroy() {
- backgroundThread.running = false;
- super.onDestroy();
- Log.i(LOG_TAG, "Service Destroyed");
- }
- @Override
- public IBinder onBind(Intent arg0) {
- return null;
- }
- private final class BackgroundThread extends Thread {
- private final static long MIN_DELAY = 2000L;
- private final static long MAX_RANDOM_DELAY = 10000L;
- public boolean running= true;
- public void run() {
- Log.i(LOG_TAG, "BackgroundThread Started");
- Random random = new Random();
- while(running && notificationNumber<MAX_NOTIFICATION_NUMBER){
- long randomDelay = MIN_DELAY + Math.abs(random.nextInt() %MAX_RANDOM_DELAY);
- Log.i(LOG_TAG, "Delay is (ms) "+randomDelay);
- try{
- Thread.sleep(randomDelay);
- }
- catch(InterruptedException ie){
- }
- sendNotification2();
- sendNotification1();
- }
- stopSelf();
- }
- }
- }
Parsed in 0.044 seconds, using GeSHi 1.0.8.4
And DestinationActivity:
Using java Syntax Highlighting
- public class DestinationActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.notification_activity);
- // Otteniamo le informazioni associate all'Intent
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- TextView textView = (TextView) findViewById(R.id.outputView);
- textView.setText(extras.getString("notificationType"));
- }
- }
- }
Parsed in 0.035 seconds, using GeSHi 1.0.8.4
I've tryed also with same Intent, with same pendingIntent with same notification or viceversa with different Intent, pendingIntent (like this code)... I don't know how fix that
Please help me, Thanks.

