gpt4 book ai didi

安卓开发工具包。获取 NOTIFICATION_SERVICE 以恢复,而不是启动新实例

转载 作者:行者123 更新时间:2023-11-29 18:13:52 26 4
gpt4 key购买 nike

我真的在推进我的 android 应用程序。我能够实现 onDestroy() 和 onPause() 例程。

我还设法让 Android 的通知服务将我的带有标题和正文的图标放在通知栏/任务菜单中。

这个通知服务的唯一问题是,如果我的 android 应用程序已经在运行,并且已经启动了 super.onPause(); 的 onPause() 函数; moveTaskToBack(true);,如果用户点击通知,它将调出我的应用程序的一个新实例。

一旦用户与新实例交互,程序就会崩溃,因为后台版本已经在运行,导致冲突。

这是我的通知代码,我需要帮助让这段代码查找我的应用程序的已运行版本:

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificatonManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.ic_launcher;
CharSequence tickerText = "app name";
long when = System.currentTimeMillis();
CharSequence contentTitle = "app title";
CharSequence contentText = "text";
Intent notificationIntent = new Intent(this, SuperMicProActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
final int signed = 1;
mNotificatonManager.notify(signed, notification);

我正在查看 onResume() 可能是某种 bringTaskToFront(this) 选项。这存在吗?

谢谢,

最佳答案

恕我直言,你有一些问题。

and has initiated the onPause() function that super.onPause(); moveTaskToBack(true);

这是相当奇怪的行为。你为什么要这样做?

Once the user interacts with the new instance, the program will crash because the background version is already running, causing conflicts.

那么在原始 Activity 中所做的任何事情根本不应该在 Activity 中,而应该在服务中。一旦您不再有前台 Activity ,Android 终止您的进程以释放内存的可能性相当高,并且可能会很快发生,具体取决于其他情况。你似乎依赖于旧的 Activity 不知何故仍在做某事。一个 Activity 的“后台版本”不应该做任何会影响您流程中的任何其他 Activity 的事情,并且不在前台的 Activity 不应该负责做任何如果 Activity 变得“糟糕”用户可能会错过的事情。

话虽这么说,但还有其他原因可以避免您的 Activity 有第二个副本,尤其是导航——就目前而言,当用户从 Activity 的第二个副本按 BACK 时,他们将看到第一个副本,并且弄糊涂了。

I need help in making this code look for an already running version of my app

不,您“需要帮助使此代码查找您的 Activity 的已经运行的版本”。应用程序不是 Activity 。 Activity 不是应用。

FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP 添加到您的 Intent 将解决此问题:

  Intent i=new Intent(this, SuperMicProActivity.class);

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);

这会将您现有的 Activity 置于前台,并在需要时摆脱任务中的其他 Activity。

关于安卓开发工具包。获取 NOTIFICATION_SERVICE 以恢复,而不是启动新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com