Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法与UI线程通信_Android_Handler_Rpc_Protocol Buffers_Ui Thread - Fatal编程技术网

Android 无法与UI线程通信

Android 无法与UI线程通信,android,handler,rpc,protocol-buffers,ui-thread,Android,Handler,Rpc,Protocol Buffers,Ui Thread,我为android做了一个简单的RPC机制应用程序,我遇到了一个问题,我无法从RPC类返回UI线程 基本上我有3个类ServerActivity、ServerView和ServiceImplementation,我创建了3个类,因为我使用RPC和协议缓冲区进行绘图 服务器活动: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _sv = new Server

我为android做了一个简单的RPC机制应用程序,我遇到了一个问题,我无法从RPC类返回UI线程

基本上我有3个类ServerActivity、ServerView和ServiceImplementation,我创建了3个类,因为我使用RPC和协议缓冲区进行绘图

服务器活动:

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);
    }
};
服务实施:

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线程。有人知道为什么吗

谢谢, 罗伯特

而不是

ImplHandler.sendMessage(message);
使用

backToUIThread.sendMessage(message);