Skip to content

Instantly share code, notes, and snippets.

@jutikorn
Last active January 5, 2021 04:08
Show Gist options
  • Save jutikorn/8723663d048c5f4bb8b6c1932eff98e6 to your computer and use it in GitHub Desktop.
Save jutikorn/8723663d048c5f4bb8b6c1932eff98e6 to your computer and use it in GitHub Desktop.
Only 1 AndroidEntryPoint and use ActivityRetainedScoped
private EmailSender getEmailSender() {
Object local = emailSender;
if (local instanceof MemoizedSentinel) {
synchronized (local) {
local = emailSender;
if (local instanceof MemoizedSentinel) {
local = new EmailSender();
emailSender = DoubleCheck.reentrantCheck(emailSender, local);
}
}
}
return (EmailSender) local;
}
private ClassA getClassA() {
return new ClassA(getEmailSender());}
private ClassB getClassB() {
return new ClassB(getEmailSender());}
@ActivityRetainedScoped
class EmailSender @Inject constructor() {
fun send(msg: String){
println(msg)
}
}
class ClassA
@Inject constructor(
private val emailSender: EmailSender
) {
init {
println("From $this EmailSender is $emailSender")
}
}
class ClassB @Inject constructor(
private val emailSender: EmailSender
) {
init {
println("From $this EmailSender is $emailSender")
}
}
@AndroidEntryPoint
class MainFragment : Fragment() {
@Inject
lateinit var emailSender: EmailSender
@Inject
lateinit var classA: ClassA
@Inject
lateinit var classB: ClassB
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
println("From $this EmailSender is $emailSender")
}
2021-01-05 10:33:21.296 13089-13089 From ClassA@5d9e5b2 EmailSender is EmailSender@b6f3903
2021-01-05 10:33:21.296 13089-13089 From ClassB@d0c6080 EmailSender is EmailSender@b6f3903
2021-01-05 10:33:21.362 13089-13089 From MainFragment{fa313f1} EmailSender is EmailSender@b6f3903
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment