0
モデルクラスでネットワークコールがあります。 runOnUIThread
私はUIを更新できるようにしたいのですが、UIの何かへの参照を自分のネットワーククラスに渡す必要はありません。ネットワーククラスにUIクラスへの参照を与えずに、RXJavaのようなライブラリを使わずに、UIを更新するにはどうすればいいですか?RXJavaを使用しないOKHTTPネットワークコールのUIを更新しました
ここに私が作業しているコードがあります。
パブリッククラスWeatherNetwork {
public CurrentWeather getDailyWeather(float lat, float lng) {
String URL = "";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(URL)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
try {
String jsonData = response.body().string();
final String passingData = jsonData;
if(response.isSuccessful()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
});
}
});
}
} catch(JSONException e) {
Log.d(ACTIVITY + " JSONEXCEPTION", e.getMessage());
} catch(IOException e){
Log.d(ACTIVITY + " IOEXCEPTION", e.getMessage());
}
}
});
return new CurrentWeather();
}
}
イベントバス(例:greenrobotのEventBus)を使用します。あるいは、リアクティブプログラミング手法(例えば、RxJava、Architecture Componentsの「LiveData」)を使用します。 – CommonsWare
ライブラリーでそれをしない方法はありますか? – Rafa
あなたはすでにライブラリ(OkHttp)を使用していますので、なぜあなたがライブラリに反対しているのかはっきりしていません。何らかのコールバックを自分で行うことは大歓迎ですが、間接的にコールバックはUIへの参照を渡します。私はUIの参照を渡しているかどうかについて、どこに線を描いているのか分からない。 – CommonsWare