1

在我的应用程序中,我有一个简单的按钮,可以启动第二个活动,启动一个微调器(如果相关)并执行一些 http 连接工作。第二个活动也可以由运行和侦听蓝牙连接的服务启动。

这个问题没有发生在我的里程碑(2.1-update1)手机上,而是我相信运行 2.3 的同事手机上。当他们按下按钮启动第二个活动(完全忽略服务部分)时,它将多次启动该活动,当他们在第二个屏幕上按回时,他们会降落在第二个屏幕的另一个实例上,而不是回到第一个活动.

我提到这个的服务部分有两个原因,第一个是这个问题在我实现服务时开始发生,第二个是因为我有一个单独的问题,即在服务端没有正确管理客户端,所以当第二个活动通过服务而不是按钮启动时,我会看到这种行为。由于消息被发送给所有客户端(应该只有一个),我看到该服务产生了第二个活动的多次启动。但是再次按下按钮,这个已经修复的服务问题不应该负责。

现在,我已经采取了两件事来防止这种情况再次发生。我已将第二个活动标记为 singleTask (android:launchMode="singleTask"),并注意到我已将第二个活动作为 startActivityForResult 启动,但当它返回时没有设置或使用它。这不会导致任何错误或任何事情,但我将其更改为普通的 startActivity。

我没有物理访问另一部电话,所以我无法将它连接到 logcat 或任何东西,因为它在其他地方的另一个办公室。

另一部手机不再发现问题,但我担心我隐藏了问题而不是真正修复它,并且想知道是否有人可以提供一些见解?

4

1 回答 1

0

我之前遇到过一个问题,不同的手机在启动服务时会出现不同的症状。有些会多次重新启动(终止并启动)服务,而有些则不会。我猜测是因为您朋友的手机多次重新启动服务,因此每次重新启动时都会调用您的活动。

试试这个,你能在你的服务中显示通知吗?如果是这样:

startForeground(ID_NOTIFICATION, notification);

这使得服务始终在前台运行,并且不太可能被android杀死。

于 2012-07-27T16:28:57.003 回答