| | |
| | | import android.graphics.Color; |
| | | import android.os.Build; |
| | | import android.os.IBinder; |
| | | import android.util.Log; |
| | | |
| | | import androidx.annotation.Nullable; |
| | | import androidx.core.app.NotificationCompat; |
| | |
| | | import io.reactivex.netty.channel.ObservableConnection; |
| | | import rx.Observable; |
| | | import rx.Subscriber; |
| | | import rx.android.schedulers.AndroidSchedulers; |
| | | import rx.functions.Action1; |
| | | import rx.functions.Func1; |
| | | import rx.schedulers.Schedulers; |
| | |
| | | init(); |
| | | |
| | | NetStateReceiver.registerNetworkStateReceiver(this); |
| | | // 服务重复启动时先移除旧观察者,避免重复重连回调 由AI生成 |
| | | if (mNetChangeObserver != null) { |
| | | // 从网络监听器移除旧观察者实例 由AI生成 |
| | | NetStateReceiver.removeRegisterObserver(mNetChangeObserver); |
| | | } |
| | | mNetChangeObserver = new NetChangeObserver() { |
| | | @Override |
| | | public void onNetConnected(NetUtils.NetType type) { |
| | |
| | | public void onDestroy() { |
| | | super.onDestroy(); |
| | | isDestroy = true; |
| | | // 服务销毁时移除网络观察者,避免静态列表持有 Service 引用 由AI生成 |
| | | NetStateReceiver.removeRegisterObserver(mNetChangeObserver); |
| | | NetStateReceiver.unRegisterNetworkStateReceiver(this); |
| | | if (subscriber != null && !subscriber.isUnsubscribed()) { |
| | | subscriber.unsubscribe(); |
| | |
| | | return; |
| | | } |
| | | //reconnect |
| | | Observable.timer(3, TimeUnit.SECONDS).subscribe(new Action1<Long>() { |
| | | @Override |
| | | public void call(Long aLong) { |
| | | if (mConnection != null) { |
| | | mConnection.close(); |
| | | mConnection = null; |
| | | } |
| | | connectServer(); |
| | | } |
| | | }); |
| | | Observable.timer(3, TimeUnit.SECONDS) |
| | | .subscribeOn(Schedulers.io()) |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .subscribe(new Action1<Long>() { |
| | | @Override |
| | | public void call(Long aLong) { |
| | | if (mConnection != null) { |
| | | mConnection.close(); |
| | | mConnection = null; |
| | | } |
| | | Log.i("CoreService", "sendHeart_websocket长连接断开,重新连接"); |
| | | connectServer(); |
| | | } |
| | | }, Throwable::printStackTrace); |
| | | |
| | | } |
| | | |