1

には 2 つのメソッドがありますTcpClient。最初はstartListenerで、その後はconnect. 両方とも戻りvoidます。

私の現在のTcpClient実装では、そうするとアプリがクラッシュしstartListener、その後connectすぐにクラッシュします(その間に少し時間が必要だと思いますか?)。実装はSimpleTCPLibraryからここにあります (彼はで行い、トリガーする接続ボタンを持っています)。startListeneronStart()connect

私がやりたいことは dostartListenerであり、いつ成功して終了するか -> do ですconnectBoltsFramework の continueWithまたはを使用してこれを行う方法を示す例は見つかりませんでしonSuccessた。

そこに例はありますか?

4

2 に答える 2

1

いつでも試すことができます

Task.delay(200).continueWith(new Continuation<Void, Object>() {
    @Override
    public Object then(Task<Void> task) throws Exception {
        ... connect();
        return null;
    }
});
于 2016-10-24T11:18:24.933 に答える
1
    Task.callInBackground(new Callable<Void>() { //or `Task.call` for synchronous
        @Override
        public Void call()
                throws Exception {
            /*... startListener */
            return null;
        }
    }).continueWithTask(new Continuation<Void, Task<Void>>() {
        @Override
        public Task<Void> then(Task<Void> ignored)
                throws Exception {
            return Task.delay(200);
        }
    }).continueWith(new Continuation<Void, Void>() {
        @Override
        public Void then(Task<Void> ignored)
                throws Exception {
            /*... connect */
            return null;
        }
    });

またはラムダで:

Task.call(() -> { TcpClient.startListener(); return null; })
    .continueWithTask(ignored -> Task.delay(200))
    .continueWith(ignored -> { TcpClient.connect(); return null; });
于 2016-10-24T12:13:55.400 に答える