Невозможно запустить службу [имя службы] со значением NULL - PullRequest
14 голосов
/ 13 января 2011

Я недавно кодировал Android Widget и тестировал его на эмуляторе, а также на моем Galaxy S, он отлично работал на обоих, после того, как я отправил то же самое на рынок Android, теперь я получаю некоторые сообщения об ошибках.

iя заявляю службу в onUpdate класса виджетов следующим образом:

if (appWidgetIds != null) {
    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to
    // this
    // provider
    for (int i = 0; i < N; i++) {
        // Start Service for each instance
        int appWidgetId = appWidgetIds[i];
        Intent active = new Intent(context, DialerService.class);
        active.setAction("Start");
        active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                appWidgetId);

        context.startService(active);
    }
}

ошибка, которую получают некоторые люди:

java.lang.RuntimeException: Unable to start service dialer.impact.DialerService@45f926f0 with null: java.lang.NullPointerException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3282)
at android.app.ActivityThread.access$3600(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2211)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
**at dialer.impact.DialerService.onStart(DialerService.java:18)**
at android.app.Service.onStartCommand(Service.java:420)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3267)
... 10 more

состояния ошибки NullPointerException в строке 18ServiceClass это:

@Override
public void onStart(Intent intent, int startId) {
    //Line 18th 
            String command = intent.getAction();
    int appWidgetId = intent.getExtras().getInt(
            AppWidgetManager.EXTRA_APPWIDGET_ID);
    RemoteViews remoteView = new RemoteViews(getApplicationContext()
            .getPackageName(), R.layout.main);
    AppWidgetManager appWidgetManager = AppWidgetManager
            .getInstance(getApplicationContext());
}

Строка 18 - это String command = intent.getAction();

что может быть причиной того, что намерение является нулевым, помогите

Ответы [ 2 ]

30 голосов
/ 13 января 2011

Согласно документации для onStart() (фактически onStartCommand(), но параметры одинаковы):

намерение Намерение, предоставленное startService (Намерение), как указано. Это может быть ноль , если служба работает перезапущен после того, как его процесс пошел прочь, и он ранее вернулся ничего кроме START_STICKY_COMPATIBILITY.

4 голосов
/ 26 мая 2011

Привет, просто добавлю к этому, так что обходной путь - это просто добавить if (intent! = Null) перед getAction ()? Если я сделаю это, будет ли служба запускаться позже самостоятельно? Это означает, что ОС фактически помогает мне правильно запустить службу в случае нулевого намерения. Я боюсь оказаться в ситуации, когда служба вообще не запускается.

...