【发布时间】: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