相关疑难解决方法(0)

了解Dagger 2中的范围

我在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 dependency-injection dagger-2

6
推荐指数
1
解决办法
1856
查看次数

Dagger2范围和活动生命周期

我有一个Android活动,正在使用Dagger2将Presenter注入其中。我希望Presenter能够保持状态,即使发生配置更改也是如此。

例如,我将使用Presenter发起网络呼叫,如果用户在进行网络呼叫时旋转设备,我希望能够在设备完成旋转之后接收响应,并且不必重新启动呼叫。

我被绊倒了,因为如果我将Presenter实例的范围限定在Activity的生命范围内,那么当Activity在配置更改期间通过onDestroy()进行操作时,Presenter不会被垃圾回收吗?我的另一个想法是使用在应用程序生命周期内有效的范围。但是,如果这样做,我如何确保一旦Activity被永久销毁(不是由于配置更改,而是按下返回按钮之类的东西),就可以对Presenter进行垃圾收集?

有没有一种方法可以确保我的Presenter在活动的配置更改中不会丢失,并且在应用程序的生命周期内不会泄漏?

mvp android dagger-2

5
推荐指数
1
解决办法
1426
查看次数

标签 统计

android ×2

dagger-2 ×2

dependency-injection ×1

mvp ×1