我正在构建一个简单的应用,通过按下按钮并按下我正在运行新Activity
的消息,在通知栏中创建消息。
当我通过按下然后再次运行来关闭Activity
时,按下按钮不执行任何操作。
我还创建了一个单例NotificationManager
,以便在第二个活动的onCreate方法中自动从通知栏中删除消息图标。
似乎我的单例类仍然存在,并且不能创建新的Object
。我需要强制关闭活动,我相信只有这样我的单身人士才会被释放。
我尝试在android:noHistory="true"
上激活了manifest.xml
,并在MainActivity
上创建了此内容:
public void onContextMenuClosed(Menu menu) {
super.onContextMenuClosed(menu);
this.finish();
}
并在MessageViewer
活动
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
这是我的代码:
public class NotifyManager {
private static NotificationManager notificationManager=null;
public static NotificationManager getInstance() {
if(notificationManager==null) {
throw new NullPointerException("NotificationManager has not been set yet.");
}
else {
return notificationManager;
}
}
public static void setNotificationManager(NotificationManager nm) throws NotificationManagerException {
if(notificationManager==null) {
notificationManager = nm;
}
else {
throw new NotificationManagerException("NotificationManager has already been set.");
}
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotifyManager.setNotificationManager(nm);
Notification notify = new Notification(
R.drawable.icon,
"New message", System.currentTimeMillis());
Context context = MainActivity.this;
CharSequence title = "You have a new message";
CharSequence details = "";
Intent intent = new Intent(context, MessageViewer.class);
PendingIntent pending = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
notify.setLatestEventInfo(context, title, details, pending);
nm.notify(0, notify);
}
catch(Exception e) {
e.printStackTrace();
}
}
});
}
顺便说一下,在我的第二个活动中,我所做的只是关闭当前通知:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_message_viewer);
NotifyManager.getInstance().cancel(0);
}
答案 0 :(得分:0)
嗯,您必须使用不同的ID创建不同的通知。
在nm.notify(0, notify);
中,您无法为每个通知提供相同的ID。
因此,只需尝试为您创建的每个通知提供不同的通知ID。
希望它能起作用