2014-02-06 5 views
0

Я пытаюсь запустить сервис изнутри, поэтому он не будет остановлен на unbind. Когда я использую метод .class, он не работает. Когда я использую полное имя, он отлично работает. Это также происходит, если я делаю вызов из активности. Я не могу понять, что происходит!Исключение Null Pointer on startService

@Override 
public void onCreate() 
{ 
super.onCreate(); 

// Null Pointer Exception 
Intent serviceIntent = new Intent(getApplicationContext(), MyService.class); 
startService(serviceIntent); 

// Null Pointer Exception 
Intent serviceIntent = new Intent(this, MyService.class); 
startService(serviceIntent); 

// Works! 
Intent serviceIntent = new Intent("com.mypackage.MyService"); 
startService(serviceIntent); 

Некоторые из манифеста:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.mypackage" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" android:name="MyApplication"> 

    <service android:name="MyService" android:enabled="true"></service> 

Кроме того, точная ошибка является:

java.lang.RuntimeException: Невозможно запустить службу com.mypackage @ 427d2b80 Умышленное { cmp = com.mypackage/.MyService}: java.lang.NullPointerException

+0

Похоже, что первые два не может просто быть поддержан: http://developer.android.com/reference/android /content/Context.html#startService(android.content.Intent) – Catherine

+0

Покажите нам свой AndroidManifest.xml (соответствующая часть, относящаяся к службе) –

+0

Я добавил точную ошибку, потому что похоже, что там есть дополнительная точка, и я не могу выяснить, откуда он. – user3281779

ответ

0

Этот поворот вам нужно поставить полный класс в манифест или, по крайней мере, запустить его с помощью "." (из документов). Я использовал Eclipse для создания манифеста, и, похоже, у меня не было проблемы с определением класса, поэтому я не видел проблемы. У меня также никогда не было проблемы раньше. Также выясняется, что

Intent serviceIntent = new Intent("com.mypackage.MyService"); 
startService(serviceIntent); 

Фактически ничего не делает. Требуемая линия в манифесте:

<service android:name="com.mypackage.MyService"> 

И затем использовать:

Intent serviceIntent = new Intent(this, MyService.class); 
startService(serviceIntent); 
Смежные вопросы