|
|
@@ -5,12 +5,20 @@ package kr.co.zumo.app.lifeplus.activity;
|
|
|
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
+import android.support.annotation.CallSuper;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
+import android.util.Log;
|
|
|
import android.view.MenuItem;
|
|
|
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.disposables.CompositeDisposable;
|
|
|
import kr.co.zumo.app.lifeplus.activity.factory.ActivityFactory;
|
|
|
import kr.co.zumo.app.lifeplus.bean.JsonBeanBase;
|
|
|
+import kr.co.zumo.app.lifeplus.config.NetworkConfig;
|
|
|
import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
|
|
|
+import kr.co.zumo.app.lifeplus.network.InternetStatus;
|
|
|
+import kr.co.zumo.app.lifeplus.network.NetworkReceiver;
|
|
|
import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
|
|
|
import kr.co.zumo.app.lifeplus.view.IView;
|
|
|
import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
|
|
|
@@ -27,6 +35,9 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
|
|
|
*/
|
|
|
public abstract class ActivityBase<P extends Presenter> extends AppCompatActivity implements IView {
|
|
|
|
|
|
+ NetworkReceiver networkReceiver;
|
|
|
+ CompositeDisposable disposable = new CompositeDisposable();
|
|
|
+
|
|
|
P presenter;
|
|
|
|
|
|
/***********************************
|
|
|
@@ -43,9 +54,30 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
|
|
|
defineActionBar();
|
|
|
}
|
|
|
|
|
|
+ @CallSuper
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|
|
|
+
|
|
|
+ if (null != networkReceiver) {
|
|
|
+ networkReceiver.dispose();
|
|
|
+ networkReceiver = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != disposable) {
|
|
|
+ disposable.dispose();
|
|
|
+ disposable = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onPause() {
|
|
|
+ super.onPause();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onStart() {
|
|
|
+ super.onStart();
|
|
|
}
|
|
|
|
|
|
private boolean exitToBack() {
|
|
|
@@ -98,6 +130,34 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
|
|
|
*/
|
|
|
abstract void defineActionBar();
|
|
|
|
|
|
+ /**
|
|
|
+ * 네트워크의 연결 상태를 감시한다.
|
|
|
+ * 변동이 있을 때 presenter 로 알려준다.
|
|
|
+ */
|
|
|
+ protected void watchNetwork() {
|
|
|
+// Context context = App.getInstance().getContext();
|
|
|
+// networkReceiver = new NetworkReceiver(context, (isConnected1, type) -> {
|
|
|
+// Log.i("APP# ActivityBase | watchNetwork", "|" + "Network Status: --------- " + isConnected1 + ", type: " + type);
|
|
|
+// presenter.onChangedConnection(isConnected1, type);
|
|
|
+// });
|
|
|
+
|
|
|
+ Log.w("APP# ActivityBase | watchNetwork", "| " + this.getClass().getSimpleName() + " - WATCHING............");
|
|
|
+ disposable.add(InternetStatus.observe(NetworkConfig.HOST_URL, NetworkConfig.HOST_PORT, 2000, 1000)
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(isConnectedInternet -> {
|
|
|
+ Log.i("APP# ActivityBase | watchNetwork", "|" + "Internet Status: ++++++++++" + isConnectedInternet);
|
|
|
+ presenter.onChangedConnection(isConnectedInternet, 0);
|
|
|
+ }, e -> {
|
|
|
+ Log.i("APP# ActivityBase | watchNetwork", "|" + "Internet Status: ++++++++++" + "error ");
|
|
|
+ presenter.onChangedConnection(false, 0);
|
|
|
+ })
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void stopNetworkWatching() {
|
|
|
+ Log.w("APP# ActivityBase | stopNetworkWatching", "| " + this.getClass().getSimpleName() + " - STOP WATCHING___________");
|
|
|
+ disposable.clear();
|
|
|
+ }
|
|
|
|
|
|
/***********************************
|
|
|
* IView
|
|
|
@@ -109,6 +169,8 @@ public abstract class ActivityBase<P extends Presenter> extends AppCompatActivit
|
|
|
|
|
|
@Override
|
|
|
public void changeActivity(@ScreenID.ActivityID int activityId, JsonBeanBase bean) {
|
|
|
+ stopNetworkWatching();
|
|
|
+
|
|
|
ActivityFactory factory = new ActivityFactory();
|
|
|
Intent intent = new Intent(this, factory.getActivityClass(activityId));
|
|
|
startActivity(intent);
|