Skip to content

Instantly share code, notes, and snippets.

View BasePresenter.java
public abstract class BasePresenter<T extends MvpView> {
HandlerThread thread;
Looper looper;
Handler handler;
private T mView;
public BasePresenter() {
}
View NetworkHttpUnauthorizedReceiver.java
public class NetworkHttpUnauthorizedReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
int httpCode = intent.getIntExtra(IntentExtras.HTTP_CODE, -1);
if (httpCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
LoginActivity.logOut(context);
}
}
}
View JobDispatcherScheduler.java
Job myJob = firebaseJobDispatcher.newJobBuilder()
.setService(SmartService.class)
.setTag(SmartService.LOCATION_SMART_JOB)
.setReplaceCurrent(false)
.setConstraints(ON_ANY_NETWORK)
.build();
firebaseJobDispatcher.mustSchedule(myJob);
View WorkManager.java
@Override
public WorkerResult doWork() {
...
LocalBroadcastManager.getInstance(getAppContext()).registerReceiver(receiver, new IntentFilter(LocationBaseBroadcast.ACTION_NEW_LOCATION_ARRIVED));
locationTracker.start();
try {
locationWait = new CountDownLatch(1);
locationWait.await();
} catch (InterruptedException e) {
View LocationWork.java
public class LocationWork extends Worker {
...
static void reportFinished() {
if (locationWait != null) {
Log.d(TAG, "doWork: locationWait down by one");
locationWait.countDown();
}
}
View LocationTracker.java
//location obtained, need to send it to server
private void broadcastLocation(Location location) {
//release latch
reportFinished();
//We need to sure that device have internet live
Constraints constraints = new Constraints.Builder().setRequiredNetworkType
(NetworkType.CONNECTED).build();
//Parse our location to Data to use it as input for our worker
Data inputData = new Data.Builder()
View LocationUploadWorker.java
public class LocationUploadWorker extends Worker {
//...
public WorkerResult doWork() {
//get Data out from input
double longitude = getInputData().getDouble(LOCATION_LONG, 0);
double latitude = getInputData().getDouble(LOCATION_LAT, 0);
long time = getInputData().getLong(LOCATION_TIME, 0);
String osVersion = "WorkerReport v" + Build.VERSION.SDK_INT;
//construct our report for server format
View GreedScheduler.java
int threads = Runtime.getRuntime().availableProcessors();
ExecutorService executor = Executors.newFixedThreadPool(threads);
executor.submit(myWork);
View MainViewModel.java
PeriodicWorkRequest locationWork = new PeriodicWorkRequest.Builder(
LocationWork.class, 15, TimeUnit.MINUTES).addTag(LocationWork.TAG).build();
WorkManager.getInstance().enqueue(locationWork);
View LocationWork.java
public class LocationWork extends Worker {
...
public WorkerResult doWork() {
Log.d(TAG, "doWork: Started to work");
handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
looper = handlerThread.getLooper();
locationTracker = new LocationTracker(getApplicationContext(), looper);