Android 实例展现如何不同程序间的Serivce调用
2010-09-15 00:10:00 来源:WEB开发网@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.d("ReadActivity", "onServiceConnected");
dsb = IDemoServiceBinder.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
dsb = null;
}
};
绑定一个服务使用的代码
Intent s = new Intent("com.shinestudio.demo.demoservice");
bindService(s, sc, Context.BIND_AUTO_CREATE);
解绑
unbindService(sc);
使用接口中的方法,因为使用aidl的方法是异步的,最好不要绑定完就使用,而且在使用前一定要判断,防止NullPointerException。而且aidl方法会抛出异常,请处理异常。
if (dsb != null) {
try {
tv.setText(dsb.getPushString());
} catch (RemoteException e) {
e.printStackTrace();
}
}
项目完整的代码 接上文
DemoService
package com.shinestudio.demo.service;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
public class DemoService extends Service {
private int data = 0;
private String pushData1;
private String pushData2;
private NotificationManager nm;
private IDemoServiceBinder.Stub dBinder = new IDemoServiceBinder.Stub() {
@Override
public String getPushString() throws RemoteException {
return pushData1;
}
@Override
public void setPushString(String str) throws RemoteException {
pushData1 = str;
更多精彩
赞助商链接