我正在使用 ICP 来创建活动和服务之间的通信。我可以使用接口从活动中调用服务的方法。
我的问题是,有时我想将数据从服务推送到活动,我想从服务调用活动;s 方法。例如:updateTextView(String msg);
我不想使用广播,因为我读到它的性能不是很好。
我读了一些关于回调的东西,但我不知道如何创建它以及把它放在哪里。
谢谢 !
您可以放置一个用于启动服务的捆绑包。在您想要传回活动的服务中填充该捆绑包。然后将包传递回活动。
你可以通过 Handler 试试这个。你在你的activity中创建一个字段Handler,你的Service和onServiceConnected方法中的其他同一个类调用一个Service的方法setHandler。然后,您可以通过 Service 的 handler 向 Activity 的 handler 字段发送消息。
public class mService extends Service{
private myHandler handler;
.....
public void setHandler(myHandler activityHandler){
this.handler=activityHandler;
}
}
public class Activity extends Activity{
private myHandler activityHandler;
....
public class myHandler extends Handler{
@Override
public void handleMessage(Message msg){
switch(msg.what){
//Implement this
}
}
}
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
.....
mService= binder.getService();
mBound = true;
mService.setHandler(dHandler);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
}