Skip to content

Instantly share code, notes, and snippets.

View ubarua123's full-sized avatar
🏠
Working from home

Udayaditya Barua ubarua123

🏠
Working from home
View GitHub Profile
@ubarua123
ubarua123 / NotificationHelper.java
Last active February 16, 2016 19:14
Helper class to create notifications
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.AttrRes;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
@ubarua123
ubarua123 / SampleWorker.java
Last active January 13, 2020 07:16
WorkManager worker class sample
public class SampleWorker extends RxWorker {
public SampleWorker(
@NonNull Context context,
@NonNull WorkerParameters parameters) {
super(context, parameters);
}
public Single<Result> createWork() {
// Create a single observer which will hit a url and nothing else.
@ubarua123
ubarua123 / AddWorkerToWM.java
Last active January 14, 2020 06:09
Adding a work to WorkManager
public static final Constraints NETWORK_CONSTRAINT = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
// Create a OneTimeWorkRequest using our worker; SampleWorker.class
OneTimeWorkRequest sampleWorkRequest = new OneTimeWorkRequest
.Builder(SampleWorker.class)
.setConstraints(NETWORK_CONSTRAINT)
.setBackoffCriteria(BackoffPolicy.LINEAR, OneTimeWorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS, TimeUnit.MILLISECONDS)
.build();
// Enqueue
@ubarua123
ubarua123 / WorkerKey.java
Created January 13, 2020 07:04
Worker Key Annotation
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@MapKey
public @interface WorkerKey {
Class<? extends RxWorker> value();
}
@ubarua123
ubarua123 / WorkerBindingModule.java
Created January 13, 2020 07:11
Woker Binding module
@Module
public abstract class WorkerBindingModule {
@Binds
@IntoMap
@WorkerKey(SampleWorker.class)
abstract RxWorker bindPushContentWorker(SampleWorker sampleWorkerInstance);
@Binds
@IntoMap
public class SampleWorker extends RxWorker {
// Our custom parameter
private final Retrofit retrofit;
@Inject
public SampleWorker(
@NonNull Context context,
@NonNull WorkerParameters parameters,
Retrofit retrofit) {
@Component(modules = {
WorkerBindingModule.class, // To bind our worker classes to the factory
AppModule.class, //. Which provides context
ActivityBinderModule.class, // TO bind our activities
FragmentBinderModule.class, // To bind our fragments
AndroidInjectionModule.class
})
@Singleton
public interface AppComponent extends AndroidInjector<WonderquilApplication> {
@Subcomponent(modules = WorkerBindingModule.class)
public interface WorkManagerFactorySubComponent {
Map<Class<? extends RxWorker>, Provider<RxWorker>> getWorkerMap();
@Subcomponent.Builder
interface Builder {
@BindsInstance
Builder parameters(WorkerParameters parameters);
public class WorkManagerWorkFactory extends WorkerFactory {
private final WorkManagerFactorySubComponent.Builder subComponentBuilder;
@Inject
public WorkManagerWorkFactory(WorkManagerFactorySubComponent.Builder workerFactorySubComponent) {
this.subComponentBuilder = workerFactorySubComponent;
}
@Nullable
@Override
<application
.
.
. <!-- Activities and various other things -->
.
.
.
<provider
android:authorities="${applicationId}.workmanager-init"
android:name="androidx.work.impl.WorkManagerInitializer"