如何避免我在服务中的意图中的null?

时间:2012-11-23 14:43:31

标签: android service

我有一个在后台运行的服务。他返回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);
}

1 个答案:

答案 0 :(得分:1)

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

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

<强>异常 您可以轻松识别这种类型的问题,看看logcat。更正将取决于报告的原因。

<强>前景 这可以通过使用以下方法将服务设置为前景来解决:

        startForeground(message, notification);

在您的服务中。

问候。