我是Android Java编程的新手。
我创建了一个简单的聊天应用。事情进展顺利,但我遇到了一个小问题。我设置了launchMode =" singleTop"在我的清单的应用程序标签中,并覆盖了后退按钮,所以现在当用户按下后退或主页按钮时,聊天应用程序仍在运行(在后台)。我还创建了一些通知,当出现新聊天时(在设置了intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)时)会弹出该状态栏,并且当用户点击通知时它会带来已经运行的通知聊天应用程序到前面。这一切都很好;问题出现在我从状态栏通知中启动应用程序,然后单击后退或主页,然后选择从应用程序菜单或启动器上的快捷方式打开应用程序,这就是当它打开应用程序的第二个实例时。
这是清楚的吗?
如果应用程序没有运行,我选择从应用程序菜单运行它,它会运行(不会显示任何聊天记录,因为它没有收到任何聊天记录)。我收到一个聊天,并在应用程序的屏幕上看到它,我按下后退按钮,我回去通过应用程序菜单打开应用程序,它运行并有来自之前的聊天消息。好。现在我按回(所以应用程序在后台,但仍在运行),我收到聊天,它弹出状态栏通知,我点击它,它打开应用程序并显示之前的聊天消息。好。现在我点击后退(所以应用程序在后台运行)。然后我通过应用程序菜单打开应用程序(就像我第一次和第二次一样),但这次它没有显示以前的聊天消息,如果我收到聊天,它会发出2个通知声音,所以我知道它已经开始了应用程序的新实例。
知道什么是错的吗?
感谢。
答案 0 :(得分:3)
将活动launchMode设置为manifest中的singleInstance。