forked from square/dagger
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support an onCleared callback in the ActivityRetainedComponent.
This adds a default binding to the ActivityRetainedComponent allowing users to register onCleared listeners that will be invoked when the activity retained component and its instances will be destroyed. RELNOTES=Add support for receiving a callback for when the activity retained component will no longer be used and destroyed. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=326057949
- Loading branch information
1 parent
d77821e
commit 6300d02
Showing
7 changed files
with
209 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* Copyright (C) 2020 The Dagger Authors. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package dagger.hilt.android; | ||
|
||
import android.app.Activity; | ||
import androidx.annotation.MainThread; | ||
import androidx.annotation.NonNull; | ||
|
||
/** | ||
* A <code>ActivityRetainedLifecycle</code> class is associated with the lifecycle of the {@link | ||
* dagger.hilt.android.components.ActivityRetainedComponent}. | ||
*/ | ||
public interface ActivityRetainedLifecycle { | ||
|
||
/** | ||
* Adds a new {@link OnClearedListener} for receiving a callback when the activity retained | ||
* instances will no longer be needed and destroyed. | ||
* | ||
* @param listener The listener that should be added. | ||
*/ | ||
@MainThread | ||
void addOnClearedListener(@NonNull OnClearedListener listener); | ||
|
||
/** | ||
* Removes a {@link OnClearedListener} previously added via {@link | ||
* #addOnClearedListener(OnClearedListener)}. | ||
* | ||
* @param listener The listener that should be removed. | ||
*/ | ||
@MainThread | ||
void removeOnClearedListener(@NonNull OnClearedListener listener); | ||
|
||
/** | ||
* Listener for receiving a callback for when the {@link | ||
* dagger.hilt.android.components.ActivityRetainedComponent} will no longer be used and destroyed. | ||
*/ | ||
interface OnClearedListener { | ||
|
||
/** | ||
* Called when the activity retained instances will no longer be used and destroyed. | ||
* | ||
* <p>Specifically this will be invoked during {@link Activity#onDestroy()} when {@link | ||
* Activity#isChangingConfigurations} is false. | ||
*/ | ||
void onCleared(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Copyright (C) 2020 The Dagger Authors. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Description: | ||
# Internal Hilt Android utitlies | ||
|
||
package(default_visibility = ["//:src"]) | ||
|
||
android_library( | ||
name = "internal", | ||
srcs = ["ThreadUtil.java"], | ||
) | ||
|
||
filegroup( | ||
name = "srcs_filegroup", | ||
srcs = glob(["*"]), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* Copyright (C) 2020 The Dagger Authors. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package dagger.hilt.android.internal; | ||
|
||
import android.os.Looper; | ||
|
||
/** Thread utility methods. */ | ||
public final class ThreadUtil { | ||
|
||
private static Thread mainThread; | ||
|
||
private ThreadUtil() {} | ||
|
||
/** Returns true if the current thread is the Main thread. */ | ||
public static boolean isMainThread() { | ||
if (mainThread == null) { | ||
mainThread = Looper.getMainLooper().getThread(); | ||
} | ||
return Thread.currentThread() == mainThread; | ||
} | ||
|
||
/** Checks that the current thread is the Main thread. Otherwise throws an exception. */ | ||
public static void ensureMainThread() { | ||
if (!isMainThread()) { | ||
throw new IllegalStateException("Must be called on the Main thread."); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters