12

gần đây tôi đã mã hóa một Widget Android và thử nghiệm nó trên Emulator cũng như Galaxy S của tôi, nó hoạt động tốt trên cả hai, sau khi tôi đăng cùng một thị trường Android bây giờ tôi đang nhận được một số báo cáo lỗi.Không thể bắt đầu dịch vụ [tên dịch vụ] với số

tôi đang nêu một dịch vụ trong onUpdate của Widget lớp như thế này:

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

lỗi mà một số người đang nhận được là:

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 

lỗi khẳng định một NullPointerException trên dòng 18 của ServiceClass là:

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

Dòng 18 là String command = intent.getAction();

những gì có thể là lý do cho ý định đang được null xin vui lòng giúp

Trả lời

27

Theo tài liệu cho onStart() (trên thực tế onStartCommand() nhưng các thông số đều giống nhau):

ý định mục đích cung cấp để startService (Intent), như đã cho. Điều này có thể là nếu dịch vụ đang được khởi động lại sau khi quá trình của nó đã biến mất và trước đó đã trả lại bất cứ điều gì ngoại trừ START_STICKY_COMPATIBILITY.

+2

Cảm ơn, có vẻ như vậy, tôi nghĩ rằng ứng dụng Task Killer mà mọi người sử dụng có thể đang giết dịch vụ – Parvesh

+3

để xử lý khi nào dịch vụ đang được khởi động lại? nó luôn luôn có lỗi – yozawiratama

+0

Có cách nào để tránh điều này không. Tôi đang gặp vấn đề tương tự với Google Analytics trong ứng dụng của mình. –

4

Xin chào chỉ để thêm vào điều này, do đó, giải pháp thay thế chỉ là thêm if (intent! = Null) trước getAction()? Nếu tôi làm điều này, dịch vụ có bắt đầu đúng sau đó không? Có nghĩa là các hệ điều hành thực sự giúp tôi bắt đầu dịch vụ đúng trong trường hợp của một ý định null. Tôi sợ kết thúc trong một tình huống mà dịch vụ không bắt đầu chút nào.

+0

Có bạn sẽ ổn nếu bạn đặt kiểm tra null cho mục đích – Parvesh

+0

nếu bạn kiểm tra giá trị null sau đó, nó sẽ không ném bất kỳ ngoại lệ nào trên séc đó. –

Các vấn đề liên quan