如果尝试在第一个通知的15秒内发送另一个通知,我试图取消我已请求发送给用户的通知。
这是我的代码:
全局变量:
public NotificationManager nm;
通知功能:
final NotificationCompat.Builder b = new NotificationCompat.Builder(this);
b.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.mipmap.ic_launcher))
.setContentTitle(title)
.setContentText(message);
if (nm != null) {
Log.d(TAG, "notifyThis: cancelled");
nm.cancelAll();
} else {
Log.d(TAG, "notifyThis: not cancelled");
}
nm = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
nm.notify(1, b.build());
Log.d(TAG, "notifyThis: notify");
}
}, 15000);
我注意到在发布通知之前,nm仍然为空,因此此方法无法正常工作,但我需要一种方法在创建通知后,在通过.notify发布通知之前删除通知
感谢。
答案 0 :(得分:1)
理想情况下,您不希望依赖于变量的null状态 相反,Handler类具有删除以前计划的任务的方法。为此,您需要保留对Handler和Runnable对象的引用。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="container">
<div class="cmd">
<p class="init">$Robot~ </p>
<p class="perc"> </p>
</div>
</div>
</body>