美文网首页
上班第八周

上班第八周

作者: 寒冬_腊月 | 来源:发表于2020-06-28 22:16 被阅读0次

需求已经测试通过了,手上没有其它事,就看代码,熟悉一些功能和模块,也方便后面快速开发;经过2个版本的优化,通过Bugly看到用户ANR率由我刚来的0.35%降到0.08%, 做的优化总算是见效果了

app调试功能

为了方便app调试一些功能,都会设置一个单独的调试界面,公司app设置的位置就首页的Title
使用注解的方式添加需要调试的功能,可以指定到类

public class DeveloperModel {

    @DeveloperActivity.Group(name = "test")
    public static void addGroup(DeveloperActivity.GroupItem group) throws Exception {
        group.addItem("Codova调试", WebViewActivity.class, null);
        group.addItem("注解启动页面", WebViewActivity.class, null);

    }
}

public class DeveloperActivity extends AppCompatActivity {
     @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_developer);

        createData();
    }

}

/**
     * 反射获取数据
     */
    private void createData() {
        final List<GroupItem> l = new ArrayList<>();
        if (aClass == null) return;
        Method[] methods = aClass.getDeclaredMethods();

        GroupItem item = null;
        for (Method m : methods) {
            Group group = m.getAnnotation(Group.class);

            try {
                item = new GroupItem();
                item.name = group == null ? "找不到标题" : group.name();
                m.invoke(null, item);
                l.add(item);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

   //指明修饰的注解的生存周期,即会保留到哪个阶段,不加的话运行的时候会获取不到name
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Group {
        String name() default "默认分组";
    }

    public static class ChildItem {
        public String name;
        public Intent params;
        public Class<? extends Activity> aClass;

        public ChildItem(String name, Class<? extends Activity> aClass, Intent params) {
            this.name = name;
            this.params = params;
            this.aClass = aClass;
        }

    }

    public static class GroupItem{
        public String name;
        public List<ChildItem> childItems = new ArrayList<>();

        public List<ChildItem> getChildList() {
            return childItems;
        }

        public ChildItem addItem(String name, Class<? extends Activity> aClass, Intent intent) {
            ChildItem childItem = new ChildItem(name, aClass, intent);
            childItems.add(childItem);
            return childItem;
        }
    }

BlockingQueue介绍

这几天在看Volley源码,发现使用了两个队列:缓存队列和网络队列,用的是Concurrent包下面的PriorityBlockingQueue类

   /** The cache triage queue. */
    private final PriorityBlockingQueue<Request<?>> mCacheQueue = new PriorityBlockingQueue<>();

    /** The queue of requests that are actually going out to the network. */
    private final PriorityBlockingQueue<Request<?>> mNetworkQueue = new PriorityBlockingQueue<>();

BlockingQueue(阻塞队列)可以用来在多线程环境中实现数据共享,所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒

PriorityBlockingQueue继承BlockingQueue类,是一个基于优先级的阻塞,优先级通过Request实现Comparable接口,然后对比getPriority()mSequence的值来控制

注意的是PriorityBlockingQueue并不会阻塞数据生产者,而只会在没有可消费的数据时,阻塞数据的消费者。因此使用的时候要特别注意,生产者生产数据的速度绝对不能快于消费者消费数据的速度

小结

  1. ScrollView添加点击动作

    使用OnTouchListener

setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //dosomething
                return false;
            }
        });

  1. 翻墙
    实在受不了打开StackOverFlow太慢了,经同事介绍,开通了一个vpn,再安装了一个Proxy SwitchyOmega插件,来控制哪些web走代理,哪些直接访问,真香

    配制命令如下

sudo bash go.sh --local ./v2ray-linux-64.zip 
sudo gvim /etc/v2ray/config.json 
sudo service v2ray restart

  1. 多渠道打包
    项目多渠道打包使用的是gradle-packer-plugin插件

参考

linux下搭建v2ray服务端和客户端

v2ray-core

Volley中使用的优先级队列 PriorityQueue

Java多线程-工具篇-BlockingQueue

相关文章

  • 上班第八周

    需求已经测试通过了,手上没有其它事,就看代码,熟悉一些功能和模块,也方便后面快速开发;经过2个版本的优化,通过Bu...

  • 江亚军1组8号

    第八周周检视 3.9——3.16 这一周上班特别忙,这周中队会比赛。但是慢慢开始习惯在忙中理顺做事的顺序,面对麻烦...

  • 2019 年周记(第八周)

    2019 年周记(第八周) (2019.2.18-2.24) 时间过得真快,我已坚持第八周写周记了,给自...

  • 14.0践行第八周周检视8.15-8.21

    本周是14.0的第八周,这周忙碌的一周,给客户做理赔,送中秋礼物,带娃上班,打招聘电话,拜访客户。 一、家庭 1....

  • 集中精力画画竟然可以减缓神经痛!

    2018.6.4周一 由于倒班原因,今天已经连续上班第八天! 上周五晚上开始右半头皮和耳周开始神经痛!头皮放电样疼...

  • 第八周小结

    第八周小结 ...

  • 北京

    上班的第八天,加油!

  • 7,8周总结 一定要聚焦亲爱的

    第七、第八周属于过完年回到北京上班的这两周,先写一点散的吧,想到哪里写哪里,然后再简明扼要的把这两周所思所想的总结...

  • 2018-11-18

    谭琴第八周周检视 飞速地又过了一周。时间过得很快,这一周又到了第八周感觉时间管理,感觉这一周有很多的事情很急...

  • 周末愉快

    这是我上班的第八周了。 我有一个岩石,不看自己教的班,但是记忆力还可以,孩子们比较认同我的管理,比较畏惧。上一周在...

网友评论

      本文标题:上班第八周

      本文链接:https://www.haomeiwen.com/subject/uqvgfktx.html