Add missing nullability annotations to lifecycle

Enable lint check to ensure public API is fully annotated.

Test: ./gradlew :lifecycle:lifecycle-extensions:lintDebug :lifecycle:lifecycle-livedata-core:lintDebug :lifecycle:lifecycle-livedata:lintDebug :lifecycle:lifecycle-process:lintDebug :lifecycle:lifecycle-reactivestreams:lintDebug :lifecycle:lifecycle-runtime:lintDebug :lifecycle:lifecycle-service:lintDebug :lifecycle:lifecycle-viewmodel:lintDebug :lifecycle:lifecycle-viewmodel-fragment:lintDebug
Change-Id: Ib6be3820c447ff0d8a3e4fd3fa19c0fb86abb9ff
diff --git a/lifecycle/extensions/build.gradle b/lifecycle/extensions/build.gradle
index e5cf39c..85427bd 100644
--- a/lifecycle/extensions/build.gradle
+++ b/lifecycle/extensions/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     api(project(":lifecycle:lifecycle-runtime"))
     api(project(":arch:core-common"))
diff --git a/lifecycle/livedata/build.gradle b/lifecycle/livedata/build.gradle
index d797335..8f4de4f 100644
--- a/lifecycle/livedata/build.gradle
+++ b/lifecycle/livedata/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     implementation(project(":arch:core-common"))
     api(project(":arch:core-runtime"))
@@ -42,4 +48,4 @@
     inceptionYear = "2017"
     description = "Android Lifecycle LiveData"
     url = SupportLibraryExtension.ARCHITECTURE_URL
-}
\ No newline at end of file
+}
diff --git a/lifecycle/livedata/src/main/java/androidx/lifecycle/ComputableLiveData.java b/lifecycle/livedata/src/main/java/androidx/lifecycle/ComputableLiveData.java
index 2aedb5b..7ce7a0a 100644
--- a/lifecycle/livedata/src/main/java/androidx/lifecycle/ComputableLiveData.java
+++ b/lifecycle/livedata/src/main/java/androidx/lifecycle/ComputableLiveData.java
@@ -143,7 +143,8 @@
         ArchTaskExecutor.getInstance().executeOnMainThread(mInvalidationRunnable);
     }
 
-    @SuppressWarnings("WeakerAccess")
+    // TODO https://issuetracker.google.com/issues/112197238
+    @SuppressWarnings({"WeakerAccess", "UnknownNullness"})
     @WorkerThread
     protected abstract T compute();
 }
diff --git a/lifecycle/process/build.gradle b/lifecycle/process/build.gradle
index 26895c0..4366401 100644
--- a/lifecycle/process/build.gradle
+++ b/lifecycle/process/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     api(project(":lifecycle:lifecycle-runtime"))
 
diff --git a/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwner.java b/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwner.java
index 0e853ae..d3789c6 100644
--- a/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwner.java
+++ b/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwner.java
@@ -94,6 +94,7 @@
      *
      * @return {@link LifecycleOwner} for the whole application.
      */
+    @NonNull
     public static LifecycleOwner get() {
         return sInstance;
     }
diff --git a/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwnerInitializer.java b/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwnerInitializer.java
index e20eca0..ba3dfe9 100644
--- a/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwnerInitializer.java
+++ b/lifecycle/process/src/main/java/androidx/lifecycle/ProcessLifecycleOwnerInitializer.java
@@ -29,6 +29,7 @@
  * Internal class to initialize Lifecycles.
  * @hide
  */
+@SuppressWarnings("UnknownNullness") // TODO https://issuetracker.google.com/issues/112197238
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class ProcessLifecycleOwnerInitializer extends ContentProvider {
     @Override
diff --git a/lifecycle/reactivestreams/build.gradle b/lifecycle/reactivestreams/build.gradle
index 649c526..5350dcb 100644
--- a/lifecycle/reactivestreams/build.gradle
+++ b/lifecycle/reactivestreams/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     api(project(":arch:core-common"))
     api(project(":lifecycle:lifecycle-common"))
diff --git a/lifecycle/runtime/build.gradle b/lifecycle/runtime/build.gradle
index 40b250c..4dca4c3 100644
--- a/lifecycle/runtime/build.gradle
+++ b/lifecycle/runtime/build.gradle
@@ -11,6 +11,10 @@
     buildTypes.all {
         consumerProguardFiles 'proguard-rules.pro'
     }
+
+    lintOptions {
+        fatal("UnknownNullness")
+    }
 }
 
 dependencies {
@@ -35,4 +39,4 @@
     description "Android Lifecycle Runtime"
     url SupportLibraryExtension.ARCHITECTURE_URL
     failOnDeprecationWarnings = false
-}
\ No newline at end of file
+}
diff --git a/lifecycle/runtime/src/main/java/androidx/lifecycle/ReportFragment.java b/lifecycle/runtime/src/main/java/androidx/lifecycle/ReportFragment.java
index 33c7771..ca1f3a9 100644
--- a/lifecycle/runtime/src/main/java/androidx/lifecycle/ReportFragment.java
+++ b/lifecycle/runtime/src/main/java/androidx/lifecycle/ReportFragment.java
@@ -27,6 +27,7 @@
  *
  * @hide
  */
+@SuppressWarnings("UnknownNullness") // TODO https://issuetracker.google.com/issues/112197238
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class ReportFragment extends Fragment {
     private static final String REPORT_FRAGMENT_TAG = "androidx.lifecycle"
diff --git a/lifecycle/service/build.gradle b/lifecycle/service/build.gradle
index ada5351..f199fd2 100644
--- a/lifecycle/service/build.gradle
+++ b/lifecycle/service/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     api(project(":lifecycle:lifecycle-runtime"))
 
diff --git a/lifecycle/service/src/main/java/androidx/lifecycle/LifecycleService.java b/lifecycle/service/src/main/java/androidx/lifecycle/LifecycleService.java
index 8275573..e318682 100644
--- a/lifecycle/service/src/main/java/androidx/lifecycle/LifecycleService.java
+++ b/lifecycle/service/src/main/java/androidx/lifecycle/LifecycleService.java
@@ -21,6 +21,7 @@
 import android.os.IBinder;
 
 import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 /**
@@ -40,7 +41,7 @@
     @CallSuper
     @Nullable
     @Override
-    public IBinder onBind(Intent intent) {
+    public IBinder onBind(@NonNull Intent intent) {
         mDispatcher.onServicePreSuperOnBind();
         return null;
     }
@@ -48,7 +49,7 @@
     @SuppressWarnings("deprecation")
     @CallSuper
     @Override
-    public void onStart(Intent intent, int startId) {
+    public void onStart(@NonNull Intent intent, int startId) {
         mDispatcher.onServicePreSuperOnStart();
         super.onStart(intent, startId);
     }
@@ -59,7 +60,7 @@
     // super.onStartCommand calls onStart().
     @CallSuper
     @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
+    public int onStartCommand(@NonNull Intent intent, int flags, int startId) {
         return super.onStartCommand(intent, flags, startId);
     }
 
@@ -71,6 +72,7 @@
     }
 
     @Override
+    @NonNull
     public Lifecycle getLifecycle() {
         return mDispatcher.getLifecycle();
     }
diff --git a/lifecycle/service/src/main/java/androidx/lifecycle/ServiceLifecycleDispatcher.java b/lifecycle/service/src/main/java/androidx/lifecycle/ServiceLifecycleDispatcher.java
index 23d296e..26c4468b 100644
--- a/lifecycle/service/src/main/java/androidx/lifecycle/ServiceLifecycleDispatcher.java
+++ b/lifecycle/service/src/main/java/androidx/lifecycle/ServiceLifecycleDispatcher.java
@@ -84,6 +84,7 @@
     /**
      * @return {@link Lifecycle} for the given {@link LifecycleOwner}
      */
+    @NonNull
     public Lifecycle getLifecycle() {
         return mRegistry;
     }
diff --git a/lifecycle/viewmodel-fragment/build.gradle b/lifecycle/viewmodel-fragment/build.gradle
index 3531008..22a1fa6 100644
--- a/lifecycle/viewmodel-fragment/build.gradle
+++ b/lifecycle/viewmodel-fragment/build.gradle
@@ -23,6 +23,12 @@
     id("SupportAndroidLibraryPlugin")
 }
 
+android {
+    lintOptions {
+        fatal("UnknownNullness")
+    }
+}
+
 dependencies {
     api(SUPPORT_ANNOTATIONS)
     api(project(":lifecycle:lifecycle-savedstate-fragment"))
diff --git a/lifecycle/viewmodel-fragment/src/main/java/androidx/lifecycle/ViewModelsWithStateFactories.java b/lifecycle/viewmodel-fragment/src/main/java/androidx/lifecycle/ViewModelsWithStateFactories.java
index 34aeadb..d7a1815 100644
--- a/lifecycle/viewmodel-fragment/src/main/java/androidx/lifecycle/ViewModelsWithStateFactories.java
+++ b/lifecycle/viewmodel-fragment/src/main/java/androidx/lifecycle/ViewModelsWithStateFactories.java
@@ -66,6 +66,7 @@
      * @param activity an activity to use for state saving.
      * @param factory  a factory responsible for {@code ViewModel} creation.
      */
+    @NonNull
     public static KeyedFactory of(@NonNull FragmentActivity activity,
             @Nullable ViewModelWithStateFactory factory) {
         Application app = checkApplication(activity);
diff --git a/lifecycle/viewmodel/build.gradle b/lifecycle/viewmodel/build.gradle
index cc71b39..0564abe 100644
--- a/lifecycle/viewmodel/build.gradle
+++ b/lifecycle/viewmodel/build.gradle
@@ -27,6 +27,10 @@
     buildTypes.all {
         consumerProguardFiles 'proguard-rules.pro'
     }
+
+    lintOptions {
+        fatal("UnknownNullness")
+    }
 }
 
 dependencies {
@@ -45,4 +49,4 @@
     description = "Android Lifecycle ViewModel"
     url = SupportLibraryExtension.ARCHITECTURE_URL
     failOnUncheckedWarnings = false
-}
\ No newline at end of file
+}
diff --git a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
index 008af6e..bc0cdcb 100644
--- a/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
+++ b/lifecycle/viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.java
@@ -69,7 +69,7 @@
          * @return a newly created ViewModel
          */
         @NonNull
-        <T extends ViewModel> T create(String key, @NonNull Class<T> modelClass);
+        <T extends ViewModel> T create(@NonNull String key, @NonNull Class<T> modelClass);
     }
 
     private final KeyedFactory mFactory;