Android架构蓝图 [todo-mvp-dagger] @ActivityScoped, @FragmentScoped
创始人
2024-10-08 12:02:11
0

Android架构蓝图(todo-mvp-dagger)是一种基于MVP(Model-View-Presenter)模式和Dagger依赖注入框架的Android应用程序架构。在这种架构中,使用了@ActivityScoped和@FragmentScoped注解来管理组件的生命周期。

下面是一个示例解决方法,包含了使用@ActivityScoped和@FragmentScoped注解的代码示例:

首先,在build.gradle文件中添加必要的依赖项:

implementation 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'

接下来,定义一个包含Presenter和View的MVP模式的接口:

public interface Contract {

    interface View {
        void showData(String data);
    }

    interface Presenter {
        void loadData();
    }
}

然后,创建一个用于显示数据的Activity,并使用@ActivityScoped注解:

@ActivityScoped
public class MainActivity extends AppCompatActivity implements Contract.View {

    @Inject
    Contract.Presenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DaggerMainComponent.builder()
                .mainModule(new MainModule(this))
                .build()
                .inject(this);

        presenter.loadData();
    }

    @Override
    public void showData(String data) {
        // 显示数据
    }
}

接着,创建一个用于加载数据的Presenter,并使用@ActivityScoped注解:

@ActivityScoped
public class MainPresenter implements Contract.Presenter {

    private Contract.View view;

    @Inject
    public MainPresenter(Contract.View view) {
        this.view = view;
    }

    @Override
    public void loadData() {
        // 加载数据并回调View的方法显示数据
    }
}

接下来,创建一个用于提供Presenter的Module,并使用@ActivityScoped注解:

@Module
public class MainModule {

    private Contract.View view;

    public MainModule(Contract.View view) {
        this.view = view;
    }

    @Provides
    @ActivityScoped
    Contract.View provideView() {
        return view;
    }

    @Provides
    @ActivityScoped
    Contract.Presenter providePresenter(MainPresenter presenter) {
        return presenter;
    }
}

然后,使用@FragmentScoped注解创建一个Fragment,并在其中注入Presenter:

@FragmentScoped
public class MyFragment extends Fragment implements Contract.View {

    @Inject
    Contract.Presenter presenter;

    // ...

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        DaggerMainComponent.builder()
                .mainModule(new MainModule(this))
                .build()
                .inject(this);

        presenter.loadData();
    }

    @Override
    public void showData(String data) {
        // 显示数据
    }
}

最后,创建一个用于注入Presenter的Component:

@ActivityScoped
@Component(modules = MainModule.class)
public interface MainComponent {

    void inject(MainActivity activity);
    void inject(MyFragment fragment);
}

这样,就完成了使用@ActivityScoped和@FragmentScoped注解的Android架构蓝图(todo-mvp-dagger)。

相关内容

热门资讯

透视ai!德普软件,德普辅助软... 透视ai!德普软件,德普辅助软件(透视)一贯存在有挂(有挂攻略)-哔哩哔哩一、德普辅助软件游戏安装教...
值得注意的是!微乐小程序脚本,... 值得注意的是!微乐小程序脚本,微信小程序微乐家乡辅助器,妙招教程(详细教程)-哔哩哔哩1、上手简单,...
透视教学!德扑圈透视挂,德普辅... 透视教学!德扑圈透视挂,德普辅助器怎么用(透视)好像存在有挂(有挂工具)-哔哩哔哩;1、完成德普辅助...
出现新变化!wepoker私人... 出现新变化!wepoker私人辅助器,hhpoker辅助软件,指南书教程(有挂方式)-哔哩哔哩1、玩...
透视玄学!德普之星透视辅助软件... 透视玄学!德普之星透视辅助软件是真的吗,德普之星有辅助软件吗(透视)总是是有挂(有挂详细)-哔哩哔哩...
今天下午!微信微乐辅助器免费,... 今天下午!微信微乐辅助器免费,雀友会广东潮汕苹果脚本,方针教程(今日头条)-哔哩哔哩1、雀友会广东潮...
透视代打!德普辅助软件,德普之... 透视代打!德普辅助软件,德普之星透视辅助软件下载(透视)原来是有挂(竟然有挂)-哔哩哔哩1、玩家可以...
据玩家消息!wepoker辅助... 据玩家消息!wepoker辅助分析器,微乐江苏小程序游戏破解器下载,资料教程(存在有挂)-哔哩哔哩1...
透视辅助!德普之星透视辅助软件... 透视辅助!德普之星透视辅助软件,德普之星透视辅助插件(透视)切实是真的挂(讲解有挂)-哔哩哔哩1、进...
针对!hhpoker德州透视挂... 针对!hhpoker德州透视挂,微信小程序开心十三张脚本,诀窍教程(的确有挂)-哔哩哔哩1、用户打开...