12

我最近編寫了一個Android Widget,並在模擬器以及我的Galaxy S上進行了測試,它在兩個版本上都運行正常,之後我發佈了相同的安卓市場現在我得到了一些錯誤報告。無法啓動服務[服務名稱]爲空

我正在說明中的Widget類的像這樣的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); 
    } 
} 

其中一些人得到的錯誤是:上線18

java.lang.RuntimeException: Unable to start service [email protected] 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 

錯誤指明瞭NullPointerExceptionServiceClass這是什麼:

@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();

可能是什麼意圖作爲理由空 請幫助

回答

27

根據對onStart()的文件(實際上onStartCommand()但參數是相同的):

意圖意圖提供按照給定的方式啓動服務(Intent)。 這可能是空如果服務被 重新啓動後,它的進程已經 了,並且它有以前返回 任何東西,除了 START_STICKY_COMPATIBILITY。

+2

謝謝,這似乎是,我認爲它的任務殺手應用程序,人們使用可能會導致服務 – Parvesh 2011-01-14 04:53:52

+3

服務正在重新啓動時如何處理?它總是會出錯 – yozawiratama 2014-07-16 02:21:46

4

嗨,只需要添加到此,所以解決方法只是在getAction()之前添加一個if(intent!= null)?如果我這樣做,服務會自行啓動嗎?意思是操作系統實際上幫助我在無意的情況下正確啓動服務。我害怕在服務無法啓動的情況下結束。