我有一些需要一直在后台运行的进程。
所以我将它们设为了一个服务
。
我的问题是:有没有办法防止用户停止这个服务?(即使他使用第三方应用程序)
我有一些需要一直在后台运行的进程。
所以我将它们设为了一个服务
。
我的问题是:有没有办法防止用户停止这个服务?(即使他使用第三方应用程序)
final Intent intent = new Intent(context, YourService.class);
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 30000;//milliseconds
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);
这样,您的服务将会从AlarmManager接收到定期的onStart事件。如果您的服务被停止了,它将会被重新启动。因此,您可以说它将无限运行。
更完整的示例可在Photostream示例应用程序中找到http://code.google.com/p/apps-for-android/。
在服务的onDestory方法中发送广播,在广播接收器的onReceive方法中重新启动服务。但是请确保您的服务资源得到控制。
•一个已启动的服务可以使用startForeground(int, Notification) API将该服务置于前台状态,在此状态下,系统认为用户正在积极使用该服务,因此在低内存时不会考虑将其终止。 (在当前前台应用程序的极端内存压力下,该服务仍然理论上可能被杀死,但在实践中这不应成为问题。)