code: private void getRead() {
  		// Execute on background thread as we don't know how large this is
  		new AsyncTask<Void, Void, Void>() {
  			@Override
  			protected Void doInBackground(Void... params) {
  				int size = mPrefs.getInt("READ_ARRAY_SIZE", 0);
  				boolean value;
  				if(size < 1)
  					return null;
  
  				for(int i = 0, key; i < size; i++) {
  					key = mPrefs.getInt("READ_ARRAY_KEY_" + i, 0);
  					value = mPrefs.getBoolean("READ_ARRAY_VALUE_" + i, false);
  
  					readList.put(key, value);
  				}
  				return null;
  			}
  		}.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
  	}
docs: Asynchronously loads read data.