我有一个在后台运行的服务。他返回START_STICKY因为它侦听了一些事件,这个事件发生得非常快(来自传感器的数据)。在某些情况下,我的服务被杀死了:我有一个空的意图,根据文档,当我的服务因为他的进程消失而被杀死时它可能会发生。
我想知道如何避免它。任何帮助将不胜感激。
更新
private void startForeground() {
String title = "Warning";//getString(R.string.note_title);
String text = "App still working";//getString(R.string.note_msg);
Intent intent = new Intent(this, DriverActivity.class);
PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0);
Bitmap bitmap = BitmapFactory.decodeResource(
getResources(),
R.drawable.ic_launcher);
Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(bitmap)
.setContentTitle(title)
.setContentText(text)
.setContentIntent(pending);
Notification notification = builder.getNotification();
notification.flags |= Notification.FLAG_NO_CLEAR;
startForeground(NOTIFICATION_ID, notification);
}
答案 0 :(得分:1)
首先,您需要确定服务终止的原因。最可能的两个动机是:
<强>异常强> 您可以轻松识别这种类型的问题,看看logcat。更正将取决于报告的原因。
<强>前景强> 这可以通过使用以下方法将服务设置为前景来解决:
startForeground(message, notification);
在您的服务中。
问候。