MainActivity.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. package com.bgy.autosale.ui;
  2. import static com.hboxs.base_library.util.ToastUtil.showToast;
  3. import android.Manifest;
  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.pm.PackageManager;
  8. import android.content.res.Configuration;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.support.v4.app.ActivityCompat;
  13. import android.support.v4.app.Fragment;
  14. import android.support.v4.app.FragmentManager;
  15. import android.support.v4.app.FragmentTransaction;
  16. import android.text.TextUtils;
  17. import android.util.Log;
  18. import android.view.View;
  19. import android.view.ViewGroup;
  20. import android.widget.ProgressBar;
  21. import android.widget.TextView;
  22. import com.bgy.autosale.App;
  23. import com.bgy.autosale.Constant;
  24. import com.bgy.autosale.IceCreamDeviceConstants;
  25. import com.bgy.autosale.R;
  26. import com.bgy.autosale.entitys.ContactBean;
  27. import com.bgy.autosale.entitys.DosugarBean;
  28. import com.bgy.autosale.entitys.MakeIceCreamBean;
  29. import com.bgy.autosale.entitys.Result;
  30. import com.bgy.autosale.helpers.CleanScheduleHelper;
  31. import com.bgy.autosale.helpers.CommunicationHelper;
  32. import com.bgy.autosale.helpers.ErrorViewHelper;
  33. import com.bgy.autosale.helpers.NetTimeClock;
  34. import com.bgy.autosale.helpers.ResourceDownloadHelper;
  35. import com.bgy.autosale.helpers.SQLiteHelper;
  36. import com.bgy.autosale.helpers.UISoundHelper;
  37. import com.bgy.autosale.interfaces.Callback;
  38. import com.bgy.autosale.interfaces.SendCallback;
  39. import com.bgy.autosale.payutil.GeTuiUtil;
  40. import com.bgy.autosale.payutil.MyIntentService;
  41. import com.bgy.autosale.ui.base.BaseFragment;
  42. import com.bgy.autosale.ui.base.BaseScanGunActivity;
  43. import com.bgy.autosale.ui.consumer.MainFragment;
  44. import com.bgy.autosale.ui.consumer.PaySuccessFragment;
  45. import com.bgy.autosale.ui.consumer.ServiceFragment;
  46. import com.bgy.autosale.ui.operator.AuthNumberActivity;
  47. import com.bgy.autosale.ui.operator.LockActivity;
  48. import com.bgy.autosale.ui.operator.SnSettingActivity;
  49. import com.bgy.autosale.utils.CacheFileUtil;
  50. import com.bgy.autosale.utils.PlcLog;
  51. import com.bgy.autosale.utils.ReadCacheInfoUtils;
  52. import com.bgy.autosale.utils.SPUtils;
  53. import com.example.FaPiaoUtils;
  54. import com.example.offpay.nayax.CreditCardPresenter;
  55. import com.google.gson.Gson;
  56. import com.hboxs.base_library.base.BaseApplication;
  57. import com.hboxs.base_library.base.IView;
  58. import com.hboxs.base_library.constant.Global;
  59. import com.hboxs.base_library.constant.Heartbeat;
  60. import com.hboxs.base_library.constant.Name;
  61. import com.hboxs.base_library.event.ApiMessageEvent;
  62. import com.hboxs.base_library.http.NoPayOrderStringApi;
  63. import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
  64. import com.hboxs.base_library.http.response.HttpResult;
  65. import com.hboxs.base_library.http.response.HttpResultHandler;
  66. import com.hboxs.base_library.util.FileUtil;
  67. import com.hboxs.base_library.util.LanguageUtil;
  68. import com.hboxs.base_library.util.LogUtil;
  69. import com.hboxs.base_library.util.LogUtils;
  70. import com.hboxs.base_library.util.SharedPreferencesUtils;
  71. import com.hboxs.base_library.util.ToastUtil;
  72. import com.igexin.sdk.PushManager;
  73. import com.orhanobut.hawk.Hawk;
  74. import org.greenrobot.eventbus.EventBus;
  75. import org.greenrobot.eventbus.Subscribe;
  76. import org.greenrobot.eventbus.ThreadMode;
  77. import java.io.File;
  78. import java.lang.reflect.Field;
  79. import java.util.Arrays;
  80. import java.util.HashMap;
  81. import java.util.LinkedList;
  82. import java.util.Locale;
  83. import java.util.Map;
  84. import io.reactivex.Observable;
  85. import io.reactivex.android.schedulers.AndroidSchedulers;
  86. import io.reactivex.disposables.CompositeDisposable;
  87. import io.reactivex.disposables.Disposable;
  88. import io.reactivex.observers.DisposableObserver;
  89. import io.reactivex.schedulers.Schedulers;
  90. import top.keepempty.sph.library.SerialPortHelper;
  91. public class MainActivity extends BaseScanGunActivity implements SendCallback, Callback<Result> {
  92. private final String TAG = "MainActivity";
  93. public static MainActivity instance;
  94. private final int REQUEST_PERMISSION_CODE = 1000;
  95. private static String[] PERMISSIONS_STORAGE = {
  96. Manifest.permission.READ_EXTERNAL_STORAGE,
  97. Manifest.permission.WRITE_EXTERNAL_STORAGE};
  98. protected TextView initView;
  99. protected TextView snView;
  100. private View progressBarBg;
  101. private ProgressBar progressBar;
  102. private MainFragment mainFragment;
  103. private boolean mainViewAllReady = false;
  104. private int clickCount = 0;
  105. private long prevClickTime = 0L;
  106. public boolean isVisible = true;
  107. private boolean isDestroy = false;
  108. private Disposable checkDisposable;
  109. int isSleep = (int) SharedPreferencesUtils.getParam("sleep", -1);
  110. @Override
  111. protected void onCreate(Bundle savedInstanceState) {
  112. instance = this;
  113. if (isSleep == 0) {
  114. //锁机
  115. Intent intent = new Intent(this, LockActivity.class);
  116. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  117. startActivity(intent);
  118. }
  119. App.app.language = SPUtils.getInstance(App.app).getString(Constant.APP_LANGUAGE, Constant.LANGUAGE_ZH);
  120. Heartbeat.deviceId = FileUtil.getDeviceId().trim();
  121. Log.d("openService", "run: " + Heartbeat.deviceId + ":" + FileUtil.getDeviceId());
  122. String[] language = App.app.language.split("-");
  123. // Locale locale = new Locale(language[0], language.length > 1 ? language[1] : "");
  124. int i = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, 0) - 1;
  125. if (i>=0) {
  126. String s = LanguageUtil.language[i];
  127. Locale locale = new Locale(s);
  128. Log.d(TAG, "DynamicActivity onCreate: "+s);
  129. App.app.forceLocale(locale, this);
  130. }
  131. GeTuiUtil geTuiUtil = new GeTuiUtil(this);
  132. geTuiUtil.geTui();
  133. if (Global.isVersions == 1) {
  134. App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_ONLINE);
  135. App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_ONLINE);
  136. App.app.currencySymbol = getString(R.string.price_unit);
  137. } else {
  138. App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_FREE);
  139. App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_OFFLINE);
  140. App.app.specMultipleChoices = SPUtils.getInstance(App.app).getBoolean(ServiceFragment.SHARED_PREFERENCE_FLAVOR_MULTIPLE, true);
  141. App.app.currencySymbol = Hawk.get(Name.UNIT_OF_CURRENCY_TIME,"");
  142. }
  143. super.onCreate(savedInstanceState);
  144. EventBus.getDefault().register(this);
  145. setContentView(R.layout.activity_main);
  146. initView = findViewById(R.id.main_init_tip);
  147. snView = findViewById(R.id.device_sn);
  148. progressBarBg = findViewById(R.id.progress_bg);
  149. progressBarBg.setOnClickListener(new View.OnClickListener() {
  150. @Override
  151. public void onClick(View v) {
  152. }
  153. });
  154. progressBar = findViewById(R.id.progress_main);
  155. snView.setOnClickListener(new View.OnClickListener() {
  156. @Override
  157. public void onClick(View v) {
  158. if (clickCount == 1) {
  159. clickCount = 0;
  160. AuthNumberActivity.startActivity(MainActivity.this);
  161. } else {
  162. long current = System.currentTimeMillis();
  163. if (current - prevClickTime > 2000) {
  164. clickCount = 0;
  165. } else {
  166. clickCount++;
  167. }
  168. prevClickTime = current;
  169. }
  170. }
  171. });
  172. initView.setOnLongClickListener(new View.OnLongClickListener() {
  173. @Override
  174. public boolean onLongClick(View v) {
  175. finish();
  176. return false;
  177. }
  178. });
  179. if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
  180. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
  181. || ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
  182. ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_PERMISSION_CODE);
  183. } else {
  184. init();
  185. }
  186. } else {
  187. init();
  188. }
  189. NetTimeClock.getInstance();
  190. if (Hawk.get("nayax", false)) {
  191. Log.d(TAG, "onCreate: ALWAYS_IDLEaaaa");
  192. initCreditCardDriver();
  193. Log.d(TAG, "onCreate: ALWAYS_IDLEbbb");
  194. }
  195. if (Hawk.get("MDB_COIN", false)/*&&Hawk.get(Name.CASH_PAY, true)*/) {
  196. openSerialPortA();
  197. }
  198. }
  199. public static SerialPortHelper openSerialPortA() {
  200. return FaPiaoUtils.getInstance().getSerialPortHelper();
  201. }
  202. @Override
  203. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  204. PushManager.getInstance().initialize(this.getApplicationContext(), MyIntentService.class);
  205. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  206. if (requestCode == REQUEST_PERMISSION_CODE) {
  207. boolean flagt = false;
  208. for (int i = 0; i < permissions.length; i++) {
  209. Log.i("MainActivity", "申请的权限为:" + permissions[i] + ",申请结果:" + grantResults[i]);
  210. if (grantResults[i] != 0) {
  211. flagt = true;
  212. }
  213. }
  214. if (flagt) {//授权失败
  215. finish();
  216. } else {
  217. init();
  218. }
  219. }
  220. }
  221. @Override
  222. public boolean scanResult(String code, String source) {
  223. if (code.equals(Constant.FACTORY_RESET_MODE)) {
  224. factoryReset();
  225. }
  226. return true;
  227. }
  228. @Override
  229. protected void onResume() {
  230. super.onResume();
  231. isVisible = true;
  232. setScanCodeListener(this);
  233. hideNavKey(this);
  234. if (mainViewAllReady) {
  235. if (!mainFragment.isAdded()) {
  236. getSupportFragmentManager().beginTransaction().add(R.id.main_fragment, mainFragment).commitNow();
  237. }
  238. }
  239. }
  240. @Override
  241. protected void onPause() {
  242. super.onPause();
  243. isVisible = false;
  244. }
  245. @Subscribe(threadMode = ThreadMode.MAIN)
  246. public void event(ApiMessageEvent messageEvent) {
  247. // 进行刷新操作
  248. switch (messageEvent.getName()) {
  249. case "makeicecream":
  250. LinkedList<MakeIceCreamBean> iceCreamOrders = new LinkedList<>();
  251. MakeIceCreamBean detail = new MakeIceCreamBean();
  252. String kindData= (String) messageEvent.getData();
  253. Log.d(TAG, "makeicecreamevent: makeicecream0 "+kindData);
  254. Gson gson = new Gson();
  255. DosugarBean dosugarBean = gson.fromJson(kindData, DosugarBean.class);
  256. Log.d(TAG, "makeicecreamevent: makeicecream1"+dosugarBean);
  257. String[] stringArray = dosugarBean.getMakeCodes().replaceAll("[\\[\\] ]", "").split(",");
  258. Log.d(TAG, "makeicecreamevent: makeicecream2"+stringArray);
  259. detail.makeCodes= Arrays.stream(stringArray)
  260. .mapToInt(Integer::parseInt)
  261. .toArray();
  262. iceCreamOrders.add(detail);
  263. Log.d(TAG, "getMessage: dosugar"+iceCreamOrders);
  264. LogUtils.logWrite("远程制作雪糕");
  265. CommunicationHelper.getInstance().setMakingIceCreams(iceCreamOrders);
  266. CommunicationHelper.getInstance().setDishStatusListener(this, isManualMake ? IceCreamDeviceConstants.ORDER_MAKE_ORDER : -1);
  267. // make();
  268. Map<String, String> sugarDoStatus = new HashMap<>();
  269. sugarDoStatus.put("clientId", Heartbeat.deviceId);
  270. sugarDoStatus.put("status", "1");
  271. sugarDoStatus.put("no", dosugarBean.getNo());
  272. updateSugarDoStatus(sugarDoStatus);
  273. break;
  274. }
  275. }
  276. private IView view;
  277. private void updateSugarDoStatus(Map<String, String> sugarDoStatus) {
  278. addSubscriptionNew(NoPayOrderStringApi.api.updateSugarDoStatus(sugarDoStatus), String.class,
  279. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  280. @Override
  281. public void onNext(String data) {
  282. Log.d(TAG, "onNextupdateSugarDoStatus: "+data);
  283. LogUtils.logWrite("远程制作成功:");
  284. }
  285. @Override
  286. public void onError(Throwable t) {
  287. super.onError(t);
  288. t.printStackTrace();
  289. Log.d(TAG, "onNextupdateSugarDoStatus: "+t.getMessage());
  290. LogUtils.logWrite("远程制作失败:" + t.getMessage());
  291. }
  292. });
  293. }
  294. private boolean isManualMake = false;
  295. private boolean isManualMode() {
  296. return App.app.payChannel != Constant.PAY_FREE;
  297. }
  298. private void make(){
  299. FragmentManager fragmentManager = getSupportFragmentManager();
  300. // Fragment fragment = PaySuccessFragment.getFragment(CommunicationHelper.getInstance().getMakingIceCreams().size(), isManualMode());
  301. Fragment fragment = PaySuccessFragment.getFragment(1, isManualMode());
  302. FragmentTransaction transaction = fragmentManager.beginTransaction();
  303. transaction.replace(R.id.main_fragment, fragment);
  304. transaction.addToBackStack("main");
  305. transaction.commit();
  306. }
  307. @Override
  308. protected void onDestroy() {
  309. super.onDestroy();
  310. EventBus.getDefault().unregister(this);
  311. isDestroy = true;
  312. instance = null;
  313. if (checkDisposable != null) {
  314. checkDisposable.dispose();
  315. checkDisposable = null;
  316. }
  317. CleanScheduleHelper.getInstance().destroy();
  318. CommunicationHelper.getInstance().destroy();
  319. }
  320. public static boolean isAlive() {
  321. return instance != null;
  322. }
  323. @Override
  324. public void onBackPressed() {
  325. }
  326. @Override
  327. protected void onNewIntent(Intent intent) {
  328. super.onNewIntent(intent);
  329. }
  330. protected void init() {
  331. SQLiteHelper.getInstance().init(App.app);
  332. CommunicationHelper.getInstance();
  333. String path = CacheFileUtil.getInstance().getFilePath();
  334. PlcLog.getInstance().initLogFile(this, "", new File(path).getParent());
  335. // String sn = ReadCacheInfoUtils.getInstance().getSN();
  336. // if (sn == null || TextUtils.isEmpty(sn)) {
  337. // SnSettingActivity.startActivity(this, false);
  338. //// DeviceManagerActivity.startActivity(this, false);
  339. // return;
  340. // }
  341. // String sn="AB0001";
  342. final String secondarySN = "AB0001";
  343. final String secondarySN2 = "AB0002";
  344. // Constant.isSecondary = sn.startsWith(secondarySN) || sn.startsWith(secondarySN2);
  345. // TextView view = findViewById(R.id.test_mode);
  346. // if (sn.startsWith("CJX-")) {
  347. // view.setText("专属测试模式");
  348. // view.setVisibility(View.VISIBLE);
  349. // }
  350. // view.setOnClickListener(new View.OnClickListener() {
  351. // @Override
  352. // public void onClick(View v) {
  353. // String t = view.getText().toString();
  354. // t = t + "\n忽略机台异常";
  355. // view.setText(t);
  356. // CommunicationHelper.getInstance().changeTestMode();
  357. // }
  358. // });
  359. if (Heartbeat.deviceId!=null && Heartbeat.deviceId.length() > 6){
  360. snView.setText("SN:" + Heartbeat.deviceId.substring(Heartbeat.deviceId.length()-6));
  361. }
  362. initComplete();
  363. }
  364. public void initComplete() {
  365. if (checkDisposable != null) {
  366. checkDisposable.dispose();
  367. checkDisposable = null;
  368. }
  369. if (isDestroy) {
  370. return;
  371. }
  372. if (mainFragment != null) {
  373. mainFragment.checkData();
  374. return;
  375. }
  376. mainFragment = MainFragment.getFragment();
  377. PlcLog.getInstance().e_s(TAG, "payChannel" + App.app.payChannel);
  378. downloadResources();
  379. }
  380. // 下载广告、资源文件
  381. private void downloadResources() {
  382. new ResourceDownloadHelper(new ResourceDownloadHelper.ResourceDownloadCallback() {
  383. @Override
  384. public void complete() {
  385. if (isFinishing() || isDestroy) {
  386. return;
  387. }
  388. initProgress(App.app.getString(R.string.init_complete));
  389. initMainView();
  390. }
  391. @Override
  392. public void initProgress(String message) {
  393. if (initView == null) {
  394. return;
  395. }
  396. if (isFinishing() || isDestroy) {
  397. return;
  398. }
  399. initView.setText(message);
  400. }
  401. });
  402. }
  403. protected void showLoadView(boolean show) {
  404. if (show) {
  405. progressBarBg.setVisibility(View.VISIBLE);
  406. progressBar.setVisibility(View.VISIBLE);
  407. } else {
  408. progressBarBg.setVisibility(View.GONE);
  409. progressBar.setVisibility(View.GONE);
  410. }
  411. }
  412. private void initMainView() {
  413. mainViewAllReady = true;
  414. PlcLog.getInstance().e_s(TAG, "initMainView");
  415. UISoundHelper.getInstance();
  416. findViewById(R.id.main_fragment).setVisibility(View.VISIBLE);
  417. if (!SPUtils.getInstance(App.app).getBoolean(Constant.LOCK_IN_ERROR, false)) {
  418. App.app.initDeviceStateListener();//是否开机
  419. Log.d(TAG, "initMainView: ");
  420. }
  421. if (initView != null) {
  422. ViewGroup group = (ViewGroup) initView.getParent();
  423. group.removeView(initView);
  424. group.removeView(snView);
  425. initView = null;
  426. snView = null;
  427. }
  428. PlcLog.getInstance().e_s(TAG, "mainFragment.isAdded() " + mainFragment.isAdded());
  429. try {
  430. if (!mainFragment.isAdded()) {
  431. getSupportFragmentManager().beginTransaction().add(R.id.main_fragment, mainFragment).commitNow();
  432. }
  433. } catch (Exception e) {
  434. PlcLog.getInstance().e_s(TAG, e);
  435. }
  436. initContactView();
  437. CleanScheduleHelper.getInstance().initCleanScheduleParams();
  438. }
  439. private void initContactView() {
  440. initServerPhone();
  441. }
  442. private void initServerPhone() {
  443. if (App.app.contactBean == null) {
  444. App.app.contactBean = new ContactBean();
  445. App.app.contactBean.environmentMode = 1;
  446. }
  447. if (App.app.contactBean.hotServicePhone == null) {
  448. App.app.contactBean.hotServicePhone=Hawk.get(Name.CONTACTS_NAME,"");
  449. }
  450. if (App.app.contactBean.hotServiceTime == null) {
  451. App.app.contactBean.hotServiceTime =Hawk.get(Name.CONTACTS_NUM,"");//默认
  452. }
  453. if (App.app.contactBean.serviceWechatPlatform == null) {
  454. App.app.contactBean.serviceWechatPlatform = "http://qx-device-manage.oss-cn-shenzhen.aliyuncs.com/photo/20211020141937.jpg";//默认
  455. }
  456. }
  457. // 恢复出厂设置
  458. private void factoryReset() {
  459. ReadCacheInfoUtils.getInstance().saveSN(null);
  460. ReadCacheInfoUtils.getInstance().saveAuthEntity(null);
  461. showToast(getString(R.string.setting_technology_system_reset));
  462. finish();
  463. }
  464. private CreditCardPresenter mCreditCardPresenter;
  465. public void initCreditCardDriver() {
  466. //以下代码实现信用卡串口通信
  467. //使用此代码只需要:
  468. //1.实例化一个CreditCardPresenter
  469. mCreditCardPresenter = CreditCardPresenter.getCreditCardContract();
  470. new Handler().postDelayed(new Runnable() {
  471. @Override
  472. public void run() {
  473. if (mCreditCardPresenter != null) {
  474. if (!mCreditCardPresenter.is_ready()) {
  475. LogUtil.d(TAG, "initCreditCardDriver1: ");
  476. mCreditCardPresenter.StartCommunication(4);
  477. }
  478. LogUtil.d(TAG, "initCreditCardDriver2: ");
  479. }
  480. }
  481. }, 5000);
  482. //1.开始通信
  483. }
  484. @Override
  485. public void onResult(Result result) {
  486. AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
  487. @Override
  488. public void run() {
  489. Log.d(TAG, "AndroidSchedulers run1: "+result);
  490. Log.d(TAG, "AndroidSchedulers run2: "+result.code);
  491. Log.d(TAG, "AndroidSchedulers run3: "+result.message);
  492. Log.d(TAG, "AndroidSchedulers run4: "+result.data);
  493. switch (result.code) {
  494. }
  495. }
  496. });
  497. }
  498. @Override
  499. public void callBack(boolean ok, int[] result) {
  500. AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
  501. @Override
  502. public void run() {
  503. showToast(ok ? App.app.getString(R.string.setting_plc_send_success) : App.app.getString(R.string.setting_plc_send_fail));
  504. }
  505. });
  506. }
  507. private CompositeDisposable mDisposables;
  508. protected void addSubscriptionNew(Observable observable, Class clazz, DisposableObserver observer) {
  509. if (mDisposables == null) {
  510. mDisposables = new CompositeDisposable();
  511. }
  512. if (clazz == HttpResult.class) {
  513. observable = observable.compose(HttpResultHandler.<String>transformer());
  514. }
  515. observable
  516. .unsubscribeOn(Schedulers.io())
  517. .subscribeOn(Schedulers.io())
  518. .observeOn(AndroidSchedulers.mainThread())
  519. .subscribe(observer);
  520. mDisposables.add(observer);
  521. }
  522. }