我的应用程序服务运行良好,但当用户不使用电话时,如20分钟,该服务不再工作。是否有一些我认为要做的事情就像拯救一个国家或某事一样,我现在迷失了。我不明白为什么服务doest继续运行,我查看应用程序>在我的手机上运行服务,它仍然说它正在运行。有什么建议吗?
答案 0 :(得分:5)
我几次回来时遇到了同样的问题。然后我开始使用Android Alarm Service。这解决了我的问题。以下是参考链接http://android-er.blogspot.com/2010/10/simple-example-of-alarm-service-using.html
答案 1 :(得分:4)
如果你想继续在后台运行(例如下载东西),你需要拿一个唤醒锁(http://developer.android.com/reference/android/os/PowerManager.html)
另外,如果您碰巧在后台进行下载,请查看以下内容: http://developer.android.com/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()
答案 2 :(得分:4)
您可以使用广播接收器来使用类似的服务。 并且它可以与警报管理器的服务相同。 接收器:
public class CallListReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Call List receiver called", Toast.LENGTH_LONG)
.show();
}
}
您可以使用以下方式继续调用它:
public void startAlert(Context context) {
Intent call_intent = new Intent(this, CallListReceiver.class);
PendingIntent pendingCallIntent = PendingIntent.getBroadcast(context,
0, call_intent, 0);
AlarmManager call_alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
call_alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), (7 * 1000), pendingCallIntent);
}
答案 3 :(得分:3)
这个Android的行为是A服务的最长寿命为20分钟。 20分钟后,它将被Android操作系统自动杀死。但我认为有一个解决方案。我还没有测试过它。解决方案是:
在onStartCommand()中,将此代码放在此方法的末尾
return START_STICKY;