AIDL и java.lang.NullPointException

Ответить
Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

AIDL и java.lang.NullPointException

Сообщение Mikhail_dev » 27 апр 2012, 11:09

Здравствуйте. Есть до ужаса простой код. Делаю по примеру http://developer.android.com/guide/deve ... /aidl.html

IRemoteService.aidl

Код: Выделить всё

package my.aidltest.newtest;
interface IRemoteService {
	int getInt();
}
Реализуем этот интерфейс в сервисе

Код: Выделить всё

public class RemoteService extends Service {
	@Override
	public void onCreate() {
		super.onCreate();
	}

	@Override
	public IBinder onBind(Intent intent) {
		return mBinder;
	}

	private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
		public int getInt(){
			return 123;
		}
	};
}
Далее связываем его в активити

Код: Выделить всё

public class AIDLTestActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Intent serviceIntent = (new Intent(this, RemoteService.class));
		startService(serviceIntent);
		bindService(new Intent(IRemoteService.class.getName()),
				mConnection, Context.BIND_AUTO_CREATE);
		try {
			Log.d("myLog","int="+ mIRemoteService.getInt());
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
	
	IRemoteService mIRemoteService;
	private ServiceConnection mConnection = new ServiceConnection() {

		public void onServiceConnected(ComponentName className, IBinder service) {
			mIRemoteService = IRemoteService.Stub.asInterface(service);
		}

		public void onServiceDisconnected(ComponentName className) {
			Log.d("myLog", "Service has unexpectedly disconnected");
			mIRemoteService = null;
		}
	};
}
В манифесте такая запись
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".AIDLTestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:process=":remote" android:name="my.aidltest.newtest.RemoteService">
<intent-filter>
<action android:name="my.aidltest.newtest.IRemoteService"/>
</intent-filter>
</service>
</application>
В итоге получаю Java.lang.NullPointException
04-27 12:03:24.946: D/AndroidRuntime(3810): Shutting down VM
04-27 12:03:24.976: W/dalvikvm(3810): threadid=3: thread exiting with uncaught exception (group=0x40026160)
04-27 12:03:24.976: E/AndroidRuntime(3810): Uncaught handler: thread main exiting due to uncaught exception
04-27 12:03:24.986: E/AndroidRuntime(3810): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.aidltest.newtest/my.aidltest.newtest.AIDLTestActivity}: java.lang.NullPointerException
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2503)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2519)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread.access$2200(ActivityThread.java:123)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.os.Handler.dispatchMessage(Handler.java:99)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.os.Looper.loop(Looper.java:123)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread.main(ActivityThread.java:4370)
04-27 12:03:24.986: E/AndroidRuntime(3810): at java.lang.reflect.Method.invokeNative(Native Method)
04-27 12:03:24.986: E/AndroidRuntime(3810): at java.lang.reflect.Method.invoke(Method.java:521)
04-27 12:03:24.986: E/AndroidRuntime(3810): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-27 12:03:24.986: E/AndroidRuntime(3810): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-27 12:03:24.986: E/AndroidRuntime(3810): at dalvik.system.NativeStart.main(Native Method)
04-27 12:03:24.986: E/AndroidRuntime(3810): Caused by: java.lang.NullPointerException
04-27 12:03:24.986: E/AndroidRuntime(3810): at my.aidltest.newtest.AIDLTestActivity.onCreate(AIDLTestActivity.java:23)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-27 12:03:24.986: E/AndroidRuntime(3810): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2466)
04-27 12:03:24.986: E/AndroidRuntime(3810): ... 11 more
04-27 12:03:25.006: E/SemcCheckin(3810): Get crash dump level : java.io.FileNotFoundException: /data/semc-checkin/crashdump
04-27 12:03:25.016: I/dalvikvm(3810): threadid=7: reacting to signal 3
04-27 12:03:25.026: I/dalvikvm(3810): Wrote stack trace to '/data/anr/traces.txt'
Подскажите что делаю не так. Уже перечитал в двух книгах примеры, в документации на сайте андроида тоже смотрел пример. Везде получаю одну и ту же ошибку.
Заранее спасибо.

P.S. все файлы находятся в одном пакете

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: AIDL и java.lang.NullPointException

Сообщение Mikhail_dev » 28 апр 2012, 12:50

Ответ был найден. bindService() - асинхронная функция и не гарантирует того, что будет выполнена сразу же.

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: AIDL и java.lang.NullPointException

Сообщение Lucifer777 » 07 дек 2015, 23:45

Привет!
Имею в Google analitics такую вот ошибку:
NullPointerException (@GeoAidlInterface$Stub$Proxy:getLatitudeService:144) {main}
Всю голову сломал, понять не могу из-за чего появляется. На девайсах тестирую, всё нормально.

Ответить