.NET Web Api に投稿要求を行う Android アプリケーションがあります。正常に動作しますが、ユーザーにより良いサービスを提供するには、いくつかの更新が必要です。そして、これは私にとっていくつかの問題を引き起こします。
activity_main.xml ファイルにユーザー名、パスワードのテキスト ボックス、およびログイン ボタンがあります。
ユーザーがログインボタンをクリックすると、値がチェックされ、値が適切であれば、WebRequest.java クラスを介してサーバーに送信されます。
これが私の問題です:
これらの値をサーバーに送信すると、メイン (UI) スレッドがロックされます。スレッドを使用してそのロックを防止したかった:
public static WebLoginResponse loginRequest(final String username, final String password) {
Thread loginThread = new Thread(new Runnable() {
@Override
public void run() {
// making request here.
}
});
loginThread.start();
}
これによりロックは防止されますが、応答は null を返します。その理由は明らかです。MainActivity.java ファイルからこのメソッドを呼び出すと、次のようになります。
WebLoginResponse response = WebRequests.loginRequest(username, password);
loginRequestを実行している loginThread が、UI スレッドが loginRequest メソッドから戻ってきて、応答変数の値を取得しようとしました。loginThreadはまだ仕事を終えていません。そのため、応答は null です。
応答は常に null であるため、これは私の問題の解決策ではありません。
最後に、このリクエストを実行したいのですが、UI スレッドをロックしたくありません。
どうすればそれを達成できますか?
ありがとう。