2012-03-27 33 views
1

我爲Android製作了一個簡單的RPC機制應用程序,而且我遇到了一個問題,我無法從RPC類返回到UI線程。無法與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); 
    } 
}; 

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

而不是

ImplHandler.sendMessage(message); 

使用

backToUIThread.sendMessage(message);