我正試圖在我的服務和活動設置之間進行雙向通信。爲了做到這一點,我像平常一樣開始我的服務,發送消息並將replyTo設置爲我的活動中的Messenger,然後將其發送給我的服務。這樣我有一個參考在兩個方向發送消息。這裏是我的Activty一些相關的代碼:)服務未初始化,返回空指針異常
private Messenger mService = null;
private final Messenger mMessenger = new Messenger(new IncomingHandler());
private ServiceConnection mConnection = new ServiceConnection()
{
public void onServiceConnected(ComponentName className, IBinder service)
{
mService = new Messenger(service);
mBound = true;
}
public void onServiceDisconnected(ComponentName className)
{
mService = null;
mBound = false;
}
};
private void initMessenger()
{
Message messageHandler = Message.obtain(null, NetworkService.MSG_GET_HANDLER, 0, 0);
messageHandler.replyTo = mMessenger; //Set the replyTo to give a reference
try
{
mService.send(messageHandler);
}
catch(RemoteException e)
{
e.printStackTrade();
}
catch(NullPointerException e)
{
e.printStackTrace(); //Why!!!
}
}
public void onCreate()
{
...
//Create the intent to start the network service
Intent iService = new Intent(this, NetworkService.class);
int[] connectionConfig = {CONNECTION_BT};
iService.putExtra(CONNECTION_CONFIG, connectionConfig);
bindService(iService, mConnection, Context.BIND_ABOVE_CLIENT);
startService(iService);
initMessenger();
}
產生NullPointerException當我嘗試打電話mService.send(拋出,很可能是因爲MSERVICE在當時是零。如果我移動Button的OnClickListener中的initMessenger()代碼,它會正常工作,這是混淆的地方。開始服務使用它之後,我應該等待一段時間嗎?