我为Android制作了一个简单的RPC机制应用程序,我遇到了一个问题,我无法从RPC类返回到UI线程。
基本上我有3个类(ServerActivity,ServerView和ServiceImplementation),我创建了3个类,因为我使用RPC和Protocol Buffer进行绘制。
服务器活动:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_sv = new ServerView(this);
setContentView(_sv);
rpcConnectionFactory = SocketRpcConnectionFactories.createServerRpcConnectionFactory(SERVER_PORT);
int nThreadPool = 1;
server = new RpcServer(rpcConnectionFactory, Executors.newFixedThreadPool(nThreadPool), true);
server.registerBlockingService(Service.newReflectiveBlockingService(new ServiceImpl(myServiceHandler)));
server.run();
}
Handler myServiceHandler = new Handler() {
public void handleMessage(Message msg) {
Log.i("Handler", "Handler IN");
_sv.set(msg.what); /*To communicate with the view*/
super.handleMessage(msg);
}
};
ServiceImplementation:
public CanvasServiceImpl(Handler mActivity) {
backToUIThread = mActivity;
}
public Response drawCircle(RpcController controller, Circle1 request)
throws ServiceException {
android.os.Message message = new android.os.Message();
message.what = 1;
ImplHandler.sendMessage(message);
Response response = Response.newBuilder().setResult("drawCircle Success").build();
return response;
}
我无法访问我的UI线程。有人知道为什么吗?
谢谢, 罗伯特
答案 0 :(得分:0)
而不是
ImplHandler.sendMessage(message);
使用
backToUIThread.sendMessage(message);