我创建了一个状态栏通知,它会在状态栏上显示一些消息,当点击它时会重定向到一个全新的布局。 状态条形码 -
NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(this, TaskCompleteActivity.class);
notificationIntent.putExtra(TasksDBAdapter.KEY_ROWID, rowId);
notificationIntent.putExtra(TasksDBAdapter.KEY_TITLE, taskTitle);
notificationIntent.putExtra(TasksDBAdapter.KEY_BODY, taskDesc);
//notificationIntent.putExtra("NotificationId", );
Log.i(TAG,"rowId in doReminderWork" + rowId);
PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent,PendingIntent.FLAG_ONE_SHOT);
Notification note=new Notification(android.R.drawable.stat_sys_warning,taskDesc,System.currentTimeMillis());
note.setLatestEventInfo(this, taskTitle,taskDesc, pi);
note.defaults |= Notification.FLAG_AUTO_CANCEL;
note.defaults |= Notification.DEFAULT_SOUND;
note.defaults |= Notification.DEFAULT_VIBRATE;
// you need to clear the notification on click of status bar notification //
note.flags |= Notification.FLAG_NO_CLEAR;
// An issue could occur if user ever enters over 2,147,483,647 tasks. (Max int
// value).
// I highly doubt this will ever happen. But is good to note.
int id = (int)((long)rowId);
mgr.notify(id, note);
这个布局有一个名为Complete的按钮,我将删除数据库中的一行并调用finish()。代码 -
public void completeTask(){
taskDBAdapter.deleteReminder(rowId);
this.finish();
}
在此之后,如果我从普通菜单打开我的应用程序,它仍然会向我显示具有完整按钮的相同布局,而不是我的登陆活动。为什么这项活动没有完成?
先谢谢, 考希克
答案 0 :(得分:0)
我建议您在线查看Notifications API指南的最新更新。人们有时会惊讶于他们发起活动来处理通知时会发生什么。您应该使用的选项在指南中进行了描述。
一个相当简单的总结是,通知启动的活动应该是一项单独的任务。如果“活动”是应用程序的正常部分,则用户应使用“最近”来访问从通知启动的任务。如果“活动”仅用于通知,则应在用户离开后完成任务。
此模式保留了用户对用户体验的期望。
在你的情况下,我很确定你开始的新活动被TaskAffinity“卡住”了你的应用程序。 API指南将向您展示如何解决这个问题。