我创建了两个应用程序。
一个应用程序是消息接收器( app1 ),另一个应用程序( app2 )用于根据消息执行其他任务。
第一个应用程序(app1)收到一条消息,创建通知并显示在顶部。 当用户单击通知时,它会调用另一个应用程序(app2)根据消息执行其他任务。
如果应用程序(app2)未运行,则应启动它。如果它已在运行,则应显示实例并完成任务。
我正在使用以下代码:
protected void displayNotification() {
Notification notification = new Notification(icon, tickerText, when);
Bundle xtra = new Bundle();
Intent ntent = new Intent(Intent.ACTION_SEND);
ntent.setClassName("com.example.mytestapp",
"com.example.mytestapp.MainActivity");
xtra.putString("id", "8610B0DD");
xtra.putParcelable("message", msg);
ntent.putExtras(xtra);
ntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
ntent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, contentTitle, contentText,
pendingIntent);
final int button_Click = 1;
nm.notify(button_Click, notification);
}
这很好但是创建了另一个应用程序(app2)的多个实例。
有没有办法阻止创建这么多副本?
答案 0 :(得分:0)
您是否尝试为活动的launchMode设置“singleTask”或“singleInstance”? http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
答案 1 :(得分:0)
与此代码完美配合。
Intent ntent = new Intent();
ntent.setClassName("com.project.test",
"com.project.test.MainActivity");
ntent.setType("vnd.android-dir/mms-sms");
ntent.putExtras(bundle);
int flags = Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP;
ntent.setFlags(flags);
//startActivity(ntent);