How to update my notification to show my time counter changing?
android, android-3.0-honeycomb, android-intent, android-notifications, android-service
Solution
`counter` is not a reference; the notification will not update with its new value until you explicitly tell it to.
Have a look at the documentation on updating an existing notification. Your ID is `1337` here, so you can use that to update it.
In fact, you may just be able to call `declareNotification()` again from your `onTick()` method... If this doesn't work, however, I would suggest keeping a reference to the `Notification` object (as a member variable), then updating it, and use `nm.notify(1337, /* your notification object */);`.
Problem
I am almost finished with this toy app game I am making. Problem: My notification is always showing my counter to be 30000. Why isn't it timing down? What I have done: I have implemented a simple Service class and a custom timer to tick down. Eventually once I am sure the timer is working I will exit the entire game. Here is my code: ``` package com.example.redshirtmarblez; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.CountDownTimer; import android.os.IBinder; import android.widget.Toast; public class TimingService extends Service{ public long counter = 30000; private Context ctx; private Activity localActivity; private NotificationManager nm; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); declareNotification(); timer.start(); //Toast.makeText(this, "Timer is :" + counter, Toast.LENGTH_LONG).show(); //showNotification(); } public void getActivity(Activity activity) { localActivity = activity; } //count to end the game public CountDownTimer timer = new CountDownTimer(30000, 1000){ public void onTick(long millisUntilFinished){ counter = millisUntilFinished / 1000; } public void onFinish(){ counter = 0; //Kill the game int i = android.os.Process.myPid(); android.os.Process.killProcess(i); } }; /* * Show a notification while this service is running */ public void declareNotification() { //Declare a new notification Notification notification = new Notification(R.drawable.ic_launcher, "A New Notification", System.currentTimeMillis()); notification.flags |= Notification.FLAG_ONGOING_EVENT; notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; Intent intent = new Intent(this, TimingService.class); PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(this, "herp", "counter: " + counter, activity); //This is clearly not 1337, but a good joke startForeground(1337, notification); } } ``` All this does when it runs is shows "A New Notification", and then changes to "herp counter: 30000". However, this notification never changes. It just stays 30000. Why? I thought I fixed this with making the flag ongoing?