2

我有一些我想一直在后台运行的进程。

所以我把它做成了一个Service.

我的问题是:有没有办法阻止用户杀死这个服务?(即使他使用第三方应用程序)

4

5 回答 5

9

不,这是不可能的。这也是个坏主意

于 2010-04-21T10:38:45.457 回答
5

也许这可以帮助你:

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/中找到。

于 2010-04-21T11:07:44.170 回答
1

• 已启动的服务可以使用startForeground(int, Notification) API 将服务置于前台状态,系统认为它是用户主动意识到的,因此在内存不足时不适合杀死。(理论上,在当前前台应用程序的极端内存压力下,服务仍然可能被杀死,但实际上这不应该是一个问题。)

于 2013-08-23T01:24:23.077 回答
1

在服务的 onDestory 方法中发送广播,在广播接收者的 onReceive 方法中重启服务。但请确保您的服务的资源在控制之下

于 2016-12-25T12:49:52.947 回答
0

请参阅:http: //developer.android.com/reference/android/app/Service.html#ProcessLifecycle

于 2010-04-21T09:38:11.183 回答