但是,脚本中的“when”参数有点混淆 ,因为状态栏通知在调用时总是被触发。 通知通知=新通知(图标,tickerText,何时);
正确 - 通知被调用时触发。如果您将变量设置为System.currentTimeMilis()(如示例中所示),则表示 - 现在显示通知。 作为触发您的通知的内容,由您来处理。一个活动看起来不是一个好的选择,但是一个服务可以。在应用程序启动时初始化您的服务(并且不要忘记在应用程序退出时停止它),并让它执行“侦听”和触发通知。那还不如看:
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;
}
}
好,谢谢,服务是这样,我想也许有是accomplisch这更简单的方法,但显然,如果你想显示在固定的计时时间通知有未:) –
,你必须在你的活动中添加一些Timer。 – Maggie
我现在创建了一个服务,每秒运行一个计时器并查询SQLiteDatabase中的notificationdates,并检查它们中的一个是否与当前时间戳匹配以触发通知。 但我想知道,是不是这种资源和电池消耗? 没有更好的方法来完成这个吗? 有点像加入约会时,重新加载服务并填写onCreate中的ArrayList以循环定时器? –