Android服务在10秒后关闭

时间:2012-03-23 15:09:04

标签: android broadcastreceiver wakelock

我正在开发一款Android应用程序,可在应用程序运行时跟踪后台的一些内容。我是Android的初学者,所以我会尝试描述我想做的事情。

设置: MainActivity,TrackerActivity,TrackerService(该服务包含一个唤醒锁)和TrackerServiceWakeupReciever

当TrackerService关闭时运行。

public class TrackerServiceWakeupReciever  extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Intent serviceIntent = new Intent(); 
        serviceIntent.setAction("com.example.android.TrackerService");
        serviceIntent.putExtra("action", "checkSound");
        context.startService(serviceIntent);
    }
}

从TrackerActivity启动服务的代码:

Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.android.TrackerService");
startService(serviceIntent);

当进入应用程序时,MainActivity正在启动,然后当TrackA活动从MainActivity启动时,TrackerService将在TrackerActivity的onCreate中启动。该服务正好关闭10秒钟。然后TrackerServiceWakeupReciever再次启动服务,它再次运行10秒并循环。

为什么它只能在10秒内运行?我注意到如果我快速返回MainActivity并按下睡眠按钮,那么服务将继续运行。即使设备退出睡眠状态,服务仍在运行,正如我希望的那样。

如何解决这个问题?用了一个星期就搞清楚了。我想这是简单的:))

提前致谢。 马丁

1 个答案:

答案 0 :(得分:0)

可能是因为某个(其他)BroadcastReceivers中某个地方的goAsync()未经处理的实现?如果你没有在goAsync()检索到的PendingResult上调用finish(),他们会在10秒后关闭它们。请参阅此处的文档:

BroadcastReceiver

否则(通常来说)你可能会阻止某些事情。