소스 검색

[공통][New] 네트워크 연결 해제 (장치, 인터넷) 시 이벤트 처리

hyodong.min 7 년 전
부모
커밋
49b793a4c7

+ 5 - 1
app/build.gradle

@@ -90,7 +90,11 @@ dependencies {
     implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
     implementation 'com.squareup.retrofit2:retrofit:2.4.0'
     implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
-    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
+    implementation('com.squareup.retrofit2:converter-gson:2.3.0')
+    {
+        exclude group: 'com.google.code.gson', module: 'gson'
+    }
+
     implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
 
     /*********************************

+ 54 - 32
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -10,20 +10,24 @@ import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.MenuItem;
 
-import io.reactivex.disposables.Disposable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.activity.setting.IAppSetting;
 import kr.co.zumo.app.lifeplus.activity.setting.NetworkDisconnectedAppSetting;
 import kr.co.zumo.app.lifeplus.activity.setting.SignUpAppSetting;
 import kr.co.zumo.app.lifeplus.activity.setting.TutorialAppSetting;
 import kr.co.zumo.app.lifeplus.application.App;
+import kr.co.zumo.app.lifeplus.config.NetworkConfig;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.model.BaseSharedPreferences;
 import kr.co.zumo.app.lifeplus.model.LifeplusPreferences;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
+import kr.co.zumo.app.lifeplus.network.InternetStatus;
 import kr.co.zumo.app.lifeplus.network.NetworkConnection;
 import kr.co.zumo.app.lifeplus.network.NetworkReceiver;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
+import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -41,7 +45,7 @@ public abstract class ActivityBase extends AppCompatActivity {
 
   private NetworkReceiver networkReceiver;
   IAppSetting appSetting;
-  Disposable disposable;
+  CompositeDisposable disposable = new CompositeDisposable();
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
@@ -56,38 +60,56 @@ public abstract class ActivityBase extends AppCompatActivity {
     ScreenChangerHelper.getInstance().setContainerId(R.id.container);
     ActionBarManager.getInstance().setActivityInfo(this);
 
-    disposable = NetworkConnection.check().subscribe(isConnected -> {
-
-      Context context = App.getInstance().getContext();
-      SuperModel.getInstance().init(new LifeplusPreferences(new BaseSharedPreferences(PreferenceManager.getDefaultSharedPreferences(context))));
-
-      networkReceiver = new NetworkReceiver(context, SuperModel.getInstance());
-
-      appSetting = getAppSetting();
-      Log.i("APP# ActivityBase | onCreate", "| Network Connected ==============================================================> " + isConnected);
-      if (isConnected == false) {
+    disposable.add(NetworkConnection.check().subscribe(isConnected -> {
+
+        Context context = App.getInstance().getContext();
+        SuperModel superModel = SuperModel.getInstance();
+        superModel.init(new LifeplusPreferences(new BaseSharedPreferences(PreferenceManager.getDefaultSharedPreferences(context))));
+
+        // fixme true-> true, false-> false  중복으로 전달되는 부분 처리 필요;
+        networkReceiver = new NetworkReceiver(context, (isConnected1, type) -> {
+          Log.i("APP# ActivityBase | onCreate", "|" + "Network Status: " + isConnected1 + ", type: " + type);
+          superModel.onChangedConnection(isConnected1, type);
+        });
+
+        disposable.add(InternetStatus.observe(NetworkConfig.HOST_URL, NetworkConfig.HOST_PORT, 5000, 3000)
+          .observeOn(AndroidSchedulers.mainThread())
+          .subscribe(isConnectedInternet -> {
+            Log.i("APP# ActivityBase | onCreate", "|" + "InternetStatus: " + isConnectedInternet);
+            superModel.onChangedConnection(isConnectedInternet, 0);
+          }, e -> {
+            superModel.onChangedConnection(false, 0);
+          })
+        );
+
+//      Log.e("APP#  ActivityBase | onCreate", "| 이전 가입 번호: ::::::::::::::::::::::::::: " + SuperModel.getInstance().getPreferences().getEncryptionUserNo());
+
+        appSetting = getAppSetting();
+        Log.i("APP# ActivityBase | onCreate", "| Network Connected ==============================================================> " + isConnected);
+        if (isConnected == false) {
 //        if (AppUtil.isRelease()) {
-        appSetting = new NetworkDisconnectedAppSetting();
+          appSetting = new NetworkDisconnectedAppSetting();
 //        }
-      }
-      else if (SuperModel.getInstance().getPreferences().getTutorialDone() == false) {
-        appSetting = new TutorialAppSetting();
-      }
-      else if (SuperModel.getInstance().getPreferences().getEncryptionUserNo().equals("") == false) {
-        // todo 앱 업데이트 한 사람일 경우
-        /**
-         * 업데이트 인증 시작
-         * - 업데이트 인증 앱 세팅 -> 프래그먼트 -> 프리젠터 ->
-         */
-      }
-      else if (false) {
-        // todo 비회원일 경우
-        appSetting = new SignUpAppSetting();
-      }
-
-      appSetting.startFragment();
-
-    }, Throwable::printStackTrace);
+        }
+        else if (superModel.getPreferences().getTutorialDone() == false) {
+          appSetting = new TutorialAppSetting();
+        }
+        else if (StringUtil.isFull(superModel.getPreferences().getEncryptionUserNo())) {
+          // todo 앱 업데이트 한 사람일 경우
+          /**
+           * 업데이트 인증 시작
+           * - 업데이트 인증 앱 세팅 -> 프래그먼트 -> 프리젠터 ->
+           */
+        }
+        else if (false) {
+          // todo 비회원일 경우
+          appSetting = new SignUpAppSetting();
+        }
+
+        appSetting.startFragment();
+
+      }, Throwable::printStackTrace)
+    );
 
   }
 

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/network/InternetStatus.java

@@ -50,8 +50,8 @@ public class InternetStatus {
    * @return Observable with Boolean
    */
   public static Observable<Boolean> observe(final String host, final int port, final int intervalMs, final int timeoutMs) {
-    return Observable.interval(0, intervalMs, TimeUnit.MILLISECONDS,
-      Schedulers.io()).map(tick -> isConnected(new Socket(), StringUtil.removeProtocol(host), port, timeoutMs)).distinctUntilChanged();
+    return Observable.interval(0, intervalMs, TimeUnit.MILLISECONDS, Schedulers.io())
+      .map(tick -> isConnected(new Socket(), StringUtil.removeProtocol(host), port, timeoutMs)).distinctUntilChanged();
   }
 
   /**

+ 8 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/FragmentBase.java

@@ -8,7 +8,6 @@ import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -42,14 +41,14 @@ public abstract class FragmentBase<T extends Presenter> extends Fragment {
   public final void onAttach(Context context) {
     super.onAttach(context);
 
-    Log.i("APP# FragmentBase | onAttach", "|"  + this);
+//    Log.i("APP# FragmentBase | onAttach", "|"  + this);
   }
 
   @Override
   public final void onCreate(@Nullable Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
-    Log.i("APP# FragmentBase | onCreate", "|"  + this);
+//    Log.i("APP# FragmentBase | onCreate", "|"  + this);
   }
 
   @Nullable
@@ -67,7 +66,7 @@ public abstract class FragmentBase<T extends Presenter> extends Fragment {
 
     draw();
 
-    Log.i("APP# FragmentBase | onActivityCreated", "|"  + this);
+//    Log.i("APP# FragmentBase | onActivityCreated", "|"  + this);
   }
 
   @Override
@@ -76,7 +75,7 @@ public abstract class FragmentBase<T extends Presenter> extends Fragment {
 
     start();
 
-    Log.i("APP# FragmentBase | onStart", "|"  + this);
+//    Log.i("APP# FragmentBase | onStart", "|"  + this);
   }
 
 //  @Override
@@ -95,14 +94,14 @@ public abstract class FragmentBase<T extends Presenter> extends Fragment {
 
     stop();
 
-    Log.i("APP# FragmentBase | onStop", "|"  + this);
+//    Log.i("APP# FragmentBase | onStop", "|"  + this);
   }
 
   @Override
   public final void onDestroyView() {
     super.onDestroyView();
 
-    Log.i("APP# FragmentBase | onDestroyView", "|"  + this);
+//    Log.i("APP# FragmentBase | onDestroyView", "|"  + this);
   }
 
   @Override
@@ -111,14 +110,14 @@ public abstract class FragmentBase<T extends Presenter> extends Fragment {
 
     presenter.dispose();
 
-    Log.i("APP# FragmentBase | onDestroy", "|"  + this);
+//    Log.i("APP# FragmentBase | onDestroy", "|"  + this);
   }
 
   @Override
   public final void onDetach() {
     super.onDetach();
 
-    Log.i("APP# FragmentBase | onDetach", "|"  + this);
+//    Log.i("APP# FragmentBase | onDetach", "|"  + this);
   }
 
   /***********************************

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/NetworkDisconnectedPresenter.java

@@ -87,7 +87,7 @@ public class NetworkDisconnectedPresenter extends Presenter<INetworkDisconnected
 
   @Override
   public void onNetworkStatusChanged(boolean isConnected, int connectType) {
-    Log.w("APP# NetworkDisconnectedPresenter | onNetworkStatusChanged", "| isConnected: " + isConnected);
+    Log.w("APP# NetworkDisconnectedPresenter | onNetworkStatusChanged", this.getClass().getSimpleName() + " | isConnected: " + isConnected);
     if (true == isConnected) {
       exitTo(ScreenID.MAIN);
     }