Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:如何强制一个应用程序只有一个实例(singleTop无法正常工作)?_Java_Android_Android Intent_Android Manifest_Instance - Fatal编程技术网

Java Android:如何强制一个应用程序只有一个实例(singleTop无法正常工作)?

Java Android:如何强制一个应用程序只有一个实例(singleTop无法正常工作)?,java,android,android-intent,android-manifest,instance,Java,Android,Android Intent,Android Manifest,Instance,我不熟悉Android Java编程 我创建了一个简单的聊天应用程序。事情进展顺利,但我遇到了一个小问题。我已经在清单的应用程序标记中设置了launchMode=“singleTop”,并覆盖了后退按钮,因此现在当用户按下后退或主页按钮时,聊天应用程序仍在运行(在后台)。我还创建了一些通知,当新聊天出现时(带有intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_SINGLE_TOP)集),这些通知会在状态栏中

我不熟悉Android Java编程

我创建了一个简单的聊天应用程序。事情进展顺利,但我遇到了一个小问题。我已经在清单的应用程序标记中设置了launchMode=“singleTop”,并覆盖了后退按钮,因此现在当用户按下后退或主页按钮时,聊天应用程序仍在运行(在后台)。我还创建了一些通知,当新聊天出现时(带有intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_SINGLE_TOP)集),这些通知会在状态栏中弹出,当用户单击通知时,它会将已经运行的聊天应用程序带到前面。这一切都很好;当我从状态栏通知打开应用程序,然后单击“上一步”或“主页”,然后从“应用程序”菜单或启动器上的快捷方式选择打开应用程序时,问题就出现了,此时它会打开应用程序的第二个实例

清楚了吗

如果应用程序没有运行,而我从应用程序菜单选择运行它,它就会运行(不会显示任何聊天记录,因为它没有收到任何聊天记录)。我收到一个聊天,并在应用程序的屏幕上看到它,我按下后退按钮,我返回并通过应用程序菜单打开应用程序,它运行并有以前的聊天信息。好。现在我按下back(所以应用程序在后台,但仍在运行),我收到一个聊天,它弹出一个状态栏通知,我点击它,它打开应用程序并显示以前的聊天信息。好。现在我点击后退(所以应用程序在后台运行)。然后,我通过应用程序菜单打开应用程序(就像我第一次和第二次那样),但这次它不会显示以前的聊天信息,如果我收到聊天,它会发出两种通知声音,因此我知道它已启动了应用程序的新实例

知道怎么了吗


谢谢。

在清单中将活动启动模式设置为singleInstance。

在清单中将活动启动模式设置为singleInstance。

poss dup感谢您的响应。我尝试添加一个isTaskRoot()检查,除了最后一次(当系统创建第二个实例时),它每次都返回true,但我从应用程序菜单启动了应用程序。你知道为什么会这样,以及如何预防吗?怎么了?好吧,你们应该使用服务来连接互联网(接收信息,发送信息,…),活动只用于显示我读到的信息,你们是对的,塞尔文,我应该使用服务,我对这一切都很陌生,当我现在拥有的几乎可以用的时候,这是另外一件需要学习的事情。你知道有什么好的服务指南吗?我看了dev.android.com,但这让我很困惑,我也看了一些谷歌的教程,但没有一个看起来很简单。谢谢你的帮助。谢谢你的回复。我尝试添加一个isTaskRoot()检查,除了最后一次(当系统创建第二个实例时),它每次都返回true,但我从应用程序菜单启动了应用程序。你知道为什么会这样,以及如何预防吗?怎么了?好吧,你们应该使用服务来连接互联网(接收信息,发送信息,…),活动只用于显示我读到的信息,你们是对的,塞尔文,我应该使用服务,我对这一切都很陌生,当我现在拥有的几乎可以用的时候,这是另外一件需要学习的事情。你知道有什么好的服务指南吗?我看了dev.android.com,但这让我很困惑,我也看了一些谷歌的教程,但没有一个看起来很简单。谢谢你的帮助。