2012-08-07 2 views
1

я разработал связанную службу как отдельный проект & Я пытаюсь получить доступ к службе от клиента, но я каким-то образом я получаюonServiceConnected не вызывался, получить нулевой указатель исключение

AndroidRuntime: FATAL EXCEPTION: main 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: java.lang.NullPointerException 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at com.test.binder.BinderServiceActivity.onClick(BinderServiceActivity.java:61) 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at android.view.View.performClick(View.java:3526) 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at android.view.View$PerformClick.run(View.java:14139) 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:605) 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92) 
08-08 12:00:40.898 3206 3206 E AndroidRuntime: at android.os.Looper.loop(Looper.java:137) 

08-08 12: 00: 40.898 3206 3206 E AndroidRuntime: at android.app.ActivityThread.main (ActivityThread.java:4725) 08-08 12: 00: 40.898 3206 3206 E AndroidRuntime: at java.lang.reflect.Method.invokeNative (Нативный метод)

Я подозреваю, что onServiceConnected не получает вызов. Может кто-то помочь мне решить это.

Спасибо заранее,

Пожалуйста найти код клиента ниже:

public class BinderServiceActivity extends Activity implements OnClickListener { 
private static final String TAG = "LogActivity"; 
ILogService logService; 
LogConnection conn; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

// Request bind to the service 
conn = new LogConnection(); // 
Intent intent = new Intent("com.test.binder.ILogService"); // 
intent.putExtra("version", "1.0"); // 
bindService(intent, conn, Context.BIND_AUTO_CREATE); // 

// Attach listener to button 
((Button) findViewById(R.id.button1)).setOnClickListener(this); 
} 

class LogConnection implements ServiceConnection { // 

public void onServiceConnected(ComponentName name, IBinder service) { // 
    logService = ILogService.Stub.asInterface(service); // 
    Log.i(TAG, "connected"); 
} 

public void onServiceDisconnected(ComponentName name) { // 
    logService = null; 
    Log.i(TAG, "disconnected"); 
} 

} 

public void onClick(View button) { 
try { 

    logService.log_d("LogClient", "Hello from onClick()"); // 
    Message msg = new Message(Parcel.obtain()); // 
    msg.setTag("LogClient"); 
    msg.setText("Hello from inClick() version 1.1"); 
    logService.log(msg); // 
} catch (RemoteException e) { // 
    Log.e(TAG, "onClick failed", e); 
} 

} 

@Override 
protected void onDestroy() { 
super.onDestroy(); 
Log.d(TAG, "onDestroyed"); 

unbindService(conn); // 

logService = null; 
} 
} 

ответ

1

Как вы не отправили полный исходный код, включая службу будет трудно вырвать вашу проблему. Вы можете загрузить Demo Source для каждого типа сервисного связывания с примером и получить краткую информацию. Демо содержит Связывание услуг с использованием трех типов

1.) Связывание с использованием IBinder

2.) связывание с использованием Посланника

3.) Переплет с помощью AIDL

+0

Я получаю нуль исключение указателя в logService.log_d («LogClient», «Hello from onClick()»); потому что logService имеет значение null. –

Смежные вопросы