转载

基于拓扑排序的渐进加载小框架

项目中有时需要渐进式分模块加载ui,这里提供一个小工具,使用例子如下:

public static void main(String[] args) {
        // write your code here
        Context context = new Context();
        PLoading pl = PLoading.create(context);
        PLoading.Node node1 = pl.createNode().onRender(
                new PLoading.RenderListener() {
                    @Override
                    public void onRender(Context context, PLoading.Node node, Runnable callWhenFinished) {
                        System.out.println("node 1 rendering");
                        // 这里显示一些view
                        callWhenFinished.run();
                    }
                }
        );
        PLoading.Node node2 = pl.createNode().onRender(
                new PLoading.RenderListener() {
                    @Override
                    public void onRender(Context context, PLoading.Node node, Runnable callWhenFinished) {
                        System.out.println("node 2 rendering");
                        // 这里显示另外一些view
                        callWhenFinished.run();
                    }
                }
        );
        PLoading.Node node3 = pl.createNode().onRender(
                new PLoading.RenderListener() {
                    @Override
                    public void onRender(Context context, PLoading.Node node, Runnable callWhenFinished) {
                        System.out.println("node 3 rendering");
                        // 这里显示另外一些view
                        callWhenFinished.run();
                    }
                }
        );
        PLoading.Node node4 = pl.createNode().onRender(
                new PLoading.RenderListener() {
                    @Override
                    public void onRender(Context context, PLoading.Node node, Runnable callWhenFinished) {
                        System.out.println("node 4 rendering");
                        // 这里显示另外一些view
                        callWhenFinished.run();
                    }
                }
        );
        PLoading.Node node5 = pl.createNode().onRender(
                new PLoading.RenderListener() {
                    @Override
                    public void onRender(Context context, PLoading.Node node, Runnable callWhenFinished) {
                        System.out.println("node 5 rendering");
                        // 这里显示另外一些view
                        callWhenFinished.run();
                    }
                }
        );
        node1.dependsOn(node2);
        node4.dependsOn(node3);
        node5.dependsOn(node1);
        pl.render();
        /*
        output:
        node 3 rendering
        node 4 rendering
        node 2 rendering
        node 1 rendering
        node 5 rendering
         */
    }

项目地址: https://github.com/legendmohe/ProgressiveLoading

原文  http://legendmohe.net/2019/03/15/基于拓扑排序的渐进加载小框架/
正文到此结束
Loading...