MVPパターンに従ってアンドロイドでrxjavaを使用しようとしています。rxjavaの使い方が分かりません
私は1週間以上を勉強しましたが、それを使用するのは難しいです。悲しいことです。
MainActivityのボタンをクリックすると、 onclickイベントがnetworkPresenter.checkConnectivity(コンテキスト)を実行します。
コードをrxjavaに変更できる場所を教えてください。
ありがとうございます。
ハッピーハロウィン!
public class NetworkPresenter {
private NetworkConnector nc;
private MessageSetter ms;
private View view;
public NetworkPresenter(NetworkPresenter.View view) {
this.view = view;
nc = new NetworkConnector();
ms = new MessageSetter();
}
public void checkConnectivity(Context context) {
int connType = nc.getConnectionStatus(context);
view.updateReceivedMessageTextView(ms.setMessage(connType));
}
public interface View {
void updateReceivedMessageTextView(String message);
}
}
。
public class NetworkConnector {
static final int NONE = 0;
static final int WIFI = 10;
static final int MOBILE = 20;
public int getConnectionStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
int result = 0;
if (activeNetwork != null) {
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) result = WIFI;
else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) result = MOBILE;
if (isOnline()) return result;
else return result + 1;
}
return NONE;
}
}
。
public class NetworkChecker extends Thread {
public static final String CONNECTION_CONFIRM_CLIENT_URL = "http://clients3.google.com/generate_204";
private boolean success;
private String host;
public NetworkChecker(String host){
this.host = host;
}
@Override
public void run() {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection)new URL(host).openConnection();
conn.setRequestProperty("User-Agent","Android");
conn.setConnectTimeout(300);
conn.connect();
int responseCode = conn.getResponseCode();
if(responseCode == 204) success = true;
else success = false;
}
catch (Exception e) {
e.printStackTrace();
success = false;
}
if(conn != null){
conn.disconnect();
}
}
public boolean isSuccess(){
return success;
}
public static boolean isOnline() {
NetworkChecker cc = new NetworkChecker(CONNECTION_CONFIRM_CLIENT_URL);
cc.start();
try{
cc.join();
return cc.isSuccess();
}catch (Exception e){
e.printStackTrace();
}
return false;
}
}
種類豊富な説明ありがとうございます! –