1

我有一项在后台运行的服务。他返回 START_STICKY 因为它侦听一些事件,这些事件发生得非常快(来自传感器的数据)。在某些情况下,我的服务被杀死:我的意图为空,根据文档,当我的服务因他的进程消失而被杀死时,可能会发生这种情况。

http://developer.android.com/reference/android/app/Service.html#onStart%28android.content.Intent,%20int%29

我想知道如何避免它。任何帮助将不胜感激。

更新

    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);
}
4

1 回答 1

1

首先,您需要确定服务终止的原因。两个最可能的动机是:

  • 服务引发异常并被 Android 终止
  • 服务被 Android 终止,因为它运行了很长时间(通常在 30 分钟到 1 小时之间)而没有被声明为前台服务

异常 这种类型的问题您可以通过查看 logcat 轻松识别。纠正将取决于报告的原因。

前台 您可以通过使用以下方式将服务设置为前台来解决此问题:

        startForeground(message, notification);

在您的服务中。

问候。

于 2012-11-23T16:46:27.437 回答