我在Dagger 2中有与范围相关的错误,我试图理解如何解决它.
我有一个CompaniesActivity显示公司.当用户选择项目时,将显示所选公司的员工EmployeesActivity.当用户选择员工时,她的详细信息显示在EmployeeDetailActivity.
class Company {
List<Employee> employees;
}
Run Code Online (Sandbox Code Playgroud)
类CompaniesViewModel包含公司和选定的公司(或null):
class CompaniesViewModel {
List<Company> companies;
Company selected;
}
Run Code Online (Sandbox Code Playgroud)
CompaniesActivity提到CompaniesViewModel:
class CompaniesActivity extends Activity {
@Inject
CompaniesViewModel viewModel;
@Override
protected void onCreate(Bundle b) {
//more stuff
getComponent().inject(this);
showCompanies(viewModel.companies);
}
//more stuff
private onCompanySelected(Company company) {
viewModel.selected = company;
startActivity(new Intent(this, EmployeesActivity.class));
}
}
Run Code Online (Sandbox Code Playgroud)
类EmployeesViewModel包含员工和选定的员工(或null):
class EmployeesViewModel {
List<Employee> employees;
Employee selected;
}
Run Code Online (Sandbox Code Playgroud)
EmployeesActivity提到 …
我有一个Android活动,正在使用Dagger2将Presenter注入其中。我希望Presenter能够保持状态,即使发生配置更改也是如此。
例如,我将使用Presenter发起网络呼叫,如果用户在进行网络呼叫时旋转设备,我希望能够在设备完成旋转之后接收响应,并且不必重新启动呼叫。
我被绊倒了,因为如果我将Presenter实例的范围限定在Activity的生命范围内,那么当Activity在配置更改期间通过onDestroy()进行操作时,Presenter不会被垃圾回收吗?我的另一个想法是使用在应用程序生命周期内有效的范围。但是,如果这样做,我如何确保一旦Activity被永久销毁(不是由于配置更改,而是按下返回按钮之类的东西),就可以对Presenter进行垃圾收集?
有没有一种方法可以确保我的Presenter在活动的配置更改中不会丢失,并且在应用程序的生命周期内不会泄漏?