但是,脚本中的“when”参数有些混乱,因为状态栏通知总是在调用时触发。通知通知 = new Notification(icon,tickerText,when);
完全正确 - 调用时触发通知。如果像示例中那样将 when 变量设置为 System.currentTimeMilis(),则意味着 - 现在显示通知。至于触发您的通知的原因,这由您来处理。Activity 似乎不是一个好的选择,但 Service 可以。在应用程序启动时初始化您的服务(不要忘记在应用程序退出时停止它),并让它“监听”和触发通知。它可能看起来像:
public class NotifyService extends Service {
private NotificationManager mNM;
@Override
public void onCreate() {
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//do some work, listen for change
if (triggerSatisfied) showNotification();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
// Cancel the persistent notification.
mNM.cancelAll();
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
private final IBinder mBinder = new LocalBinder();
private void showNotification() {
//code for notification goes here
}
public class LocalBinder extends Binder {
NotifyService getService() {
return NotifyService.this;
}
}