Невозможно общаться с потоком пользовательского интерфейса - PullRequest
1 голос
/ 27 марта 2012

Я сделал простой RPC-механизм для приложений для Android и столкнулся с проблемой, что не могу вернуться к потоку пользовательского интерфейса из класса RPC.

В основном у меня есть 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;
}

Я не могу связаться с моей темой пользовательского интерфейса. Кто-нибудь знает почему?

Спасибо, Роберт

1 Ответ

0 голосов
/ 27 марта 2012

вместо

ImplHandler.sendMessage(message);

использование

backToUIThread.sendMessage(message);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...