Ich versuche rxjava auf Android MVP Pattern zu verwenden.habe keine Ahnung, wie man rxjava verwendet
Ich habe mehr als eine Woche studiert, aber es ist zu schwer für mich, es zu benutzen .. leider.
Wenn Benutzer auf die Schaltfläche MainActivity klickt, wird das Ereignis onclick ausgeführt networkPresenter.checkConnectivity (Kontext).
Können Sie mir sagen, wo ich den Code zu rxjava ändern kann?
Vielen Dank im Voraus.
Fröhliches Halloween!
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;
}
}
Vielen Dank für die freundliche Erklärung! –