Android 状态栏通知启动新应用程序,尽管它已经在运行。如何同步从应用程序图标和状态栏通知启动应用程序?

发布于 2024-12-11 02:35:35 字数 180 浏览 1 评论 0原文

我已经在服务中实现了通知。通知效果很好。但是,当应用程序已经运行并且我单击 Android 状态栏通知时,它会启动我的应用程序的新副本。这显然是错误的。如果用户单击状态栏通知,则应该启动应用程序(如果应用程序尚未运行),否则它应该打开其他活动(在我的情况下是消息活动)。我尝试了此处发布的类似问题中提供的许多建议,但在我的案例中没有得到解决方案。

I have implemented notification within service. Notification works fine. But in the case when app is running already and I clicked on android status bar notification it launches new copy of my app. which is obviously wrong. It should be if user click on status bar notification, should start app if app is not running already otherwise it should opens other activity (message activity in my case). I tried many suggestions provided in similar type of problem posted here but I didn't get solution in my case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苦笑流年记忆 2024-12-18 02:35:35

如何在应用程序清单中将 launchMode 设置为 SingleInstance?

我在这里还学到了一个关于通知调用的特殊 NotificatonActivity 的技巧:

恢复任务而不是特定活动的通知?

How about setting the launchMode to SingleInstance in the app's manifest.

There's also the trick I picked up on here about having a special NotificatonActivity that the notification calls:

Notification to restore a task rather than a specific activity?

野稚 2024-12-18 02:35:35

在这里我设法摆脱这个问题。首先,我在扩展应用程序的入口活动或类中定义了布尔变量。我在应用程序运行时将该变量的属性设置为 true,在应用程序退出时将该属性设置为 false。我检查要打开哪个活动的布尔变量。就我而言,这可以解决问题。也许它对你的情况也有帮助。bt 场景可能会有所不同。祝你好运

Here i manage to escape out from this problem. First of all i defined Boolean variable in entry activity or class which extends application. i set attribute to that variable true when application runs and false when application exit. and i check that Boolean variable to which activity to open. in my case this solve the problem. may be it helps to your case too.bt scenario may be different. good luck

ま柒月 2024-12-18 02:35:35

使用布尔值并不是解决这个问题的好方法。有关更多信息,请查看应用程序的生命周期。相反,您应该在目标活动中将 launchMode 更改为 singleTask 或 singleInstance,并从该活动的 onNewIntent() 方法接收您的意图。

但请注意,如果您调用 super.onNewIntent(intent);然后将创建该活动的第二个实例。所以不要这么称呼,按照你的意图做任何你想做的事。

Using a boolean is not a good solution for this problem. For more info please look at the life time of the application. Instead you should change your launchMode to singleTask or singleInstance in your target activity and receive your intent from onNewIntent() method of that activity.

But be aware, if you call super.onNewIntent(intent); then a second instance of the activity will be created. So don't call that and do whatever you want with your intent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文