我正在开发一款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并按下睡眠按钮,那么服务将继续运行。即使设备退出睡眠状态,服务仍在运行,正如我希望的那样。
如何解决这个问题?用了一个星期就搞清楚了。我想这是简单的:))
提前致谢。 马丁
答案 0 :(得分:0)
可能是因为某个(其他)BroadcastReceivers中某个地方的goAsync()未经处理的实现?如果你没有在goAsync()检索到的PendingResult上调用finish(),他们会在10秒后关闭它们。请参阅此处的文档:
否则(通常来说)你可能会阻止某些事情。