AuthModule.class
@Module
class AuthModule
{
@Provides
@Singleton
AuthManager provideAuthManager(Context context) {
return new AuthManager(context);
}
}
AppComponent.class:
@Singleton
@Component(modules = {
AppModule.class,
DatabaseModule.class,
AuthModule.class,
})
public interface AppComponent
{
void inject(MainActivity activity);
}
Application.class:
public class Application extends android.app.Application
{
private static AppComponent mAppComponent;
@Override
public void onCreate() {
super.onCreate();
setup();
}
public static AppComponent getAppComponent() {
return mAppComponent;
}
private void setup() {
mAppComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}
}
BaseActivity.class:
public class BaseActivity extends AppCompatActivity
{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onInjectDependency();
}
public void onInjectDependency() {
//
}
}
MainActivity.class:
public class MainActivity extends BaseActivity
{
@Inject AuthManager authManager;
private User user;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
user = authManager.getCurrentUser();
}
@Override
public void onInjectDependency() {
Application.getAppComponent().inject(this);
}
}
Пару раз возникала ситуация, в которой происходило пересоздание AuthManager, при чём приложение было активно (видно пользователю). Для моего приложения это очень плохо, так как для доступа к данным авторизации пользователь вводит пин-код (при старте приложения).
С этим можно как-то бороться или нужно рассчитывать на пересоздание?