【问题标题】:How to bound in on startActivity() requires the FLAG_ACTIVITY_NEW_TASK?如何绑定 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK?
【发布时间】:2013-06-27 07:27:32
【问题描述】:

Android 的错误报告工具告诉我,我有来自 60 个不同地方的 60 个不同的崩溃错误:

“致命异常android.util.AndroidRuntimeException调用 来自 Activity 上下文之外的 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?”

另外,我以这种方式从服务将消息发送回主活动:

   public static class ClickHandler extends Handler {
            private final WeakReference<Main> wMain;

            public ClickHandler(Main main) {
                super();
                this.wMain = new WeakReference<Main>(main);
            }

            @Override
            public void handleMessage(Message msg) {

我从未亲自重现过此崩溃。

我有 3 个正在运行的服务,但它们都没有调用“startActivity”。

这 3 个服务确实会向 Main Activity 发送消息,并且可以想象这些服务在 Main Activity 处于后台时运行。

我如何才能开始了解这些大量崩溃的原因?

【问题讨论】:

  • 你确定不是间接调用startActivity吗?您如何将数据发送到主要活动?发送数据不应尝试启动新活动,但我们并不真正知道您在做什么。
  • 我确实通过服务内部的硬编码引用来引用 Main 活动。这可能很糟糕吧? (更新问题,请看)
  • 有点糟糕和hacky,你能发布发生异常的sn-p吗?服务是否以 STICKY 方式启动?来自文档:If the application is running in the background and needs the user's attention, the application should create a notificaiton that allows the user to respond at his or her convenience.
  • @hunterp ~ 你说“我确实通过服务内的硬编码引用来引用 Main 活动。”请贴上对应语句的代码,让我们看看。
  • 正如其他人所指出的,您确实没有提供足够的信息来让我们弄清楚这一点。我的赌注是这样的:仅仅因为 Main(我猜是一个 Activity)没有被 GCed,并不意味着它是有效的。我敢打赌,在它被销毁之后,你正在调用它的一些方法。

标签: android service android-activity runtime-error fatal-error


【解决方案1】:

听起来您应该考虑使用BroadcastReceiver 从您的Service 通知您正在运行的Activity 实例。正如其他人所指出的,我怀疑你在不应该打电话给startActivity 的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多