【问题标题】:Bug in ActivityManger in android 2.1 when using long press on Home Key使用长按 Home 键时,Android 2.1 中的 ActivityManger 中的错误
【发布时间】:2011-02-28 18:26:14
【问题描述】:

在我的一项服务中,我触发了一个事件,该事件将通知放在状态栏中,其中包括在用户单击通知时启动活动的待定意图。

我开始的活动实际上是一个“弹出窗口”,它具有在清单中定义的对话框弹出窗口 (android:theme="@android:style/Theme.Dialog") 的主题。待定意图的代码如下:

Intent intent = new Intent(this, PopupWindow.class);
PendingIntent launchIntent = PendingIntent.getActivity(context, 0 , intent, 0);

notificationManager.notify(notificationRef, notification);

在 android 2.2 中一切正常,但是在 android 2.1 中进行测试时,新启动的弹出窗口不会聚焦在屏幕上。

我知道活动正在开始,因为如果我按住主页按钮以调出最近启动的应用程序,“弹出窗口”将神奇地出现并获得焦点。

这里有什么我遗漏的吗?为什么我的代码适用于 android 2.2 而不是 2.1?

【问题讨论】:

  • 只是一个想法/建议....我对这种语法还不够了解,但看起来您正在使用变量名称 intent 定义一个 Intent - 不要使用保留字作为变量。另外,在问题的上下文中this 是什么?它在什么物体里面?
  • +1 到 CheeseConQueso(不仅是为了更加俗气),但是在您显示的代码部分中 thiscontext 是什么?
  • 上述代码中的任何内容看起来都取决于任一版本,所以我认为它可能是别的东西。您可能需要发布更多代码,但这可能是一个很大的转储,不知道在哪里看。为什么不制作 2.1 VM,并检查日志以了解发生了什么。
  • @dell116 - 另外,将您的评论放在上面(改写它)作为对问题的编辑
  • 致威利泰特——你不知道他的奶酪有时会变得多大……

标签: android android-activity dialog popup version


【解决方案1】:

经过一天的调试后,我发现从挂起的 Intent(堆栈中的 Activity B)启动的新 Activity 会丢失在 ActivityManager 中已打开的 Activity(Activity A)或最近的窗口后面的某个位置打开的应用程序(长按主页键)。

只有在 android

我尝试了几乎所有关于 Activity B 的未决意图的标志,但它们都不允许弹出窗口到达 Activity 堆栈的顶部......我认为 Nanne 和 willytate 让我走上了正确的轨道...... .

我放弃了在服务内部设置待处理意图的方法,我认为它破坏了 Activity A 和 Activity B 之间的亲和力。当我在 Activity A 内部为 Activity B 设置待处理 Intent 时,与在在后台运行的服务,Activity B(通过清单中的 android:theme="@android:style/Theme.Dialog" 弹出窗口的形式)将始终出现在堆栈的顶部。

再一次,这种对活动的“失去焦点”只是在这个过程中发生在我身上:

  1. Android 2.1
  2. 启动活动 A
  3. 使用服务设置状态栏通知,以启动 Activity B 的未决意图
  4. 长按主页键从 Activity 导航到任何其他应用程序。
  5. 服务在状态栏中触发通知以启动 Activity B。
  6. 点击通知打开活动 B。
  7. 作为对话框创建的活动 B 找不到,活动 A 到达堆栈的停止位置,但仍处于暂停状态。对 Activity A 上的用户触摸完全没有响应,并且显示的计时器没有移动。 Activity 可能卡在 onPause 中?

让活动 B 出现的唯一方法是再次长按主页键。完成后,我会在屏幕上看到以下内容,按降序排列,第一个位于堆栈顶部,可供用户输入:

  1. 最近使用的应用列表。
  2. 活动 B。
  3. Acitivyt A.

按下后退按钮关闭最近使用的应用程序列表将允许 Activity B 获取用户输入,然后一切正常运行。

如果这不是完全浪费时间的话,我确实对 Android 如何处理应用程序堆栈有了更好的了解。

其他人(如果他们真的想)可以重新创建这个问题吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多