Advertisement
MrBIMC

Why I don't like loaders

Sep 4th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1. // как это надо делать:
  2.  
  3. Single.fromCallable(() -> {
  4.         DialogsTable.getDialogByOpponentId(App.newInstance().getManagers().get(0).getManagerId());
  5.     })
  6.     .observeOn(AndroidSchedulers.mainThread())
  7.     .subscribe((dialog) -> {
  8.         MessagesTable.createChangeStatusMessage(dialog.getDialogId(), statusName, endDate);
  9.     });
  10.  
  11. // как это делают они:
  12.  
  13.     @Override
  14.     public void onResume() {
  15.         super.onResume();
  16.         //.. я убрал лишнее тут
  17.         getLoaderManager().restartLoader(Constants.CHANGE_STATUS_FRAGMENT_LOADER, null, loaderCallbacks);
  18.     }
  19.  
  20.     @Override
  21.     public void onPause() {
  22.         super.onPause();
  23.         getLoaderManager().destroyLoader(Constants.CHANGE_STATUS_FRAGMENT_LOADER);
  24.     }
  25.  
  26.     private final LoaderManager.LoaderCallbacks<Cursor> loaderCallbacks = new LoaderManager.LoaderCallbacks<Cursor>() {
  27.         @Override
  28.         public Loader<Cursor> onCreateLoader(int id, Bundle args) {
  29.  
  30.             Uri uri = null;
  31.             String selection = null;
  32.             String[] selectionArgs = new String[0];
  33.  
  34.             switch (id) {
  35.                 case Constants.CHANGE_STATUS_FRAGMENT_LOADER:
  36.                     uri = ContentProvider.createUri(DialogsTable.class, null);
  37.                     selection = DialogsTable.DIALOG_ID + "=?";
  38.                     selectionArgs = new String[]{getDialogId()};
  39.                     break;
  40.             }
  41.  
  42.             return new CursorLoader(getActivity(), uri, null, selection, selectionArgs, null);
  43.         }
  44.  
  45.         @Override
  46.         public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
  47.  
  48.             int id = loader.getId();
  49.  
  50.             if (mProgressDialog != null) {
  51.                 mProgressDialog.dismiss();
  52.             }
  53.  
  54.             switch (id) {
  55.                 case Constants.CHANGE_STATUS_FRAGMENT_LOADER:
  56.                     if (cursor.moveToFirst()) {
  57.  
  58.                         endDate = cursor.getLong(cursor.getColumnIndex(DialogsTable.DURATION));
  59.                         originalEstimateDate = cursor.getLong(cursor.getColumnIndex(DialogsTable.DURATION));
  60.  
  61.                         originalEstimate.setText(DialogsTable.getEndDateInUsaFormat(cursor));
  62.                         datePickerText.setText(DialogsTable.getEndDateInUsaFormat(cursor));
  63.  
  64.                         final int companyId = DialogsTable.getCompanyId(cursor);
  65.                         Thread thread = new Thread(new Runnable() {
  66.                             @Override
  67.                             public void run() {
  68.                                 statuses = OrderStatusesTable.getStatusesByCompanyId(companyId);
  69.                             }
  70.                         });
  71.                         thread.start();
  72.  
  73.                         try {
  74.                             thread.join();
  75.                         } catch (InterruptedException e) {
  76.                             e.printStackTrace();
  77.                         }
  78.  
  79.                         final int statusId = cursor.getInt(cursor.getColumnIndex(DialogsTable.ORDER_STATUS));
  80.                         selectedOrderStatus = getStatusById(statusId);
  81.                         initialOrderStatus = selectedOrderStatus;
  82.  
  83.                         ArrayAdapter<CompanyStatus> spinnerArrayAdapter = new ArrayAdapter<>(getActivity(),   R.layout.simple_spinner_item, statuses);
  84.                         spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  85.                         statusPicker.setAdapter(spinnerArrayAdapter);
  86.                         statusPicker.setSelection(statuses.indexOf(selectedOrderStatus));
  87.                     }
  88.  
  89.                     getLoaderManager().destroyLoader(Constants.CHANGE_STATUS_FRAGMENT_LOADER);
  90.                     break;
  91.             }
  92.         }
  93.  
  94.         @Override
  95.         public void onLoaderReset(Loader<Cursor> loader) {
  96.  
  97.         }
  98.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement