您的位置:68399皇家赌场 > 集群主机 > Review项目清单

Review项目清单

发布时间:2020-03-18 06:34编辑:集群主机浏览(190)

    3.在分化分辨率的机型上,检查布局是否有Bug

    避防内部存款和储蓄器泄漏

    • 里面类,譬喻Handler、Listener、Callback是或不是成statci calss,因为非静态内部类会持有外界类的援引
    • 若是子线程持有了Activity,要用弱援引来有所。比如Request的Activity就应有用弱引用的款型,防止内部存款和储蓄器泄漏。
    • 需求传入Activity作为参数的函数,是还是不是可改用getApplicationContext()来作为参数

    有关TraversalRunnable的调节机缘,不再此篇范围了。
    到此地,笔者能回答开篇有同学关系的难题了吗:

    4.Android 3.0以下的本子,使用完的Bitmap是不是调用recycle(卡塔尔(قطر‎,不然会直接据有内部存款和储蓄器而Android 3.0及以上的版本无需调用recycle(卡塔尔(قطر‎,因为这么些本子的Bitmap全体内置设想机的堆内存中,让GC自动回笼。

    其他

    • 多思索一些情况下,某变量是不是会为空(在函数体内,管理参数前,必需抬高判空语句)
    • 回调函数是还是不是处理好(回调函数超级轻易出难点。比方网络央求的回调,需求决断那时的Activity等是或不是存在,再扩充调用。因为异步操作回来,Activity恐怕就消失海市蜃楼了。并且还要对有个别大概被回笼的变量实行判空)
    • 改正数据库后,是不是把数据库的本子号 1
    • 起首第三方Activity时,是不是认清了该Intent能或不可能被拆解深入分析
    • 新登记的Activity、Service或Provider,若AndroidManifest.xml中exported属性为true,要考虑是还是不是会吸引安全性难题。因为exported属性为true时,外部应用就足以一向调用起该Activity。 恐怕形成的主题素材: 1)若外界应用直接开行实际情况页,进而让某个验证页面从来被绕过 2)若外界应用给该Activity传递倒三颠四的Intent,恐怕让该应用崩溃。也便是Android中的拒绝服务漏洞
    • 除数是或不是做了非0判定
    • 永不在Activity的onCreate里调用PopupWindwo的showAsLocation方法,由于Activity尚未加载完,会报错
    • 成效完结后,自测时的检查点思虑一些情况下,有个别变量是或不是会促成空指针难点
    • 把手提式有线电话机横屏,检查布局是或不是有bug在不一样分辨率的机型上,检查结构是不是有Bug
    • 切换来Hungary语等外文字体下,检查外文是或不是能全体突显
    • 从低版本进级上来,会不会有标题(比方恐怕会并发数据库不宽容的难点)
    • 按下Home再回去是不是正规
    • 冰释显示器再展开是还是不是正规
    • 切换到其余应用再切换回来会怎么
    • 选取手提式有线电话机的开辟者选项中的“调节和测验GPU过度绘制”,“GPU展现形式深入分析”和“显示FPS和耗能”成效,看自个儿的新效能是或不是会促成过度绘制、是还是不是会掉帧测验看是不是影响运营速度比较看APK大小是或不是有增大
    • 跑1时辰Monkey,测验其安居

    textview.png

    6.按下Home再回去是不是正规

    Handler相关运用。
    • View.post(卡塔尔国是还是不是万分(因为在View处于detached状态期时期,post()里面包车型客车Runnable是不会实践的。独有在那View处于attached状态时才会被实施,可改用Handler.post来实行)要是程序大概多次在同一个Handler里post同三个Runnable,每一次post从前都应超过清空那个Handler中还未有实践的该Runnable。

    清淡无为.png

    5.新注册的Activity、Service或Provider,若AndroidManifest.xml中exported属性为true,要思谋是不是会掀起安全性难点

    注意要成对现身的地点

    • 系统的、本身写的,注册和反注册的办法,是或不是成对现身
    • 在生命周期的回调里,创制和销毁的代码是不是相应起来。
    • 数据库改正后必要和版本进级一一对应
    View.post(runnable)方法的代码会在view的draw方法之前调用么?
    

    假如想改Runnable每便一定会被施行,那么应该是用Handler.post来代替

    参照他事他说加以考查了英特网海南大学学神的篇章,后边工作中用到的也会时断时续增添到那边来 :卡塔尔(قطر‎

    小编解除疑难原来的书文,并对初藳有所借鉴之处,特此证明,读者可一并阅读原来的作品:链接

    9.应用手提式有线电话机的开荒者选项中的 “调节和测量试验GPU过度绘制” ,“GPU展现形式解析” 和 “显示FPS和耗能” 功用,看本人的新功效是还是不是会招致过度绘制、是还是不是会掉帧

    清理操作

    但,那是真正吗?不是!

    因为exported属性为true时,外界应用就足以一贯调用起该Activity。或许招致的标题:1)若外界应用间接开发银行详细的情况页,从而让某个验证页面从来被绕过2)若外部应用给该Activity传递横三竖四的Intent,或然让该选取崩溃。也正是Android中的拒却服务漏洞

    页面退出时,是或不是做到需要的清理操作

    • 是还是不是调用Handler的removeCallbacksAndMessages(null)来清空Handler里的音信。
    • 是不是裁撤了还未有落成的央浼
    • 在页面里登记的监听,是不是反注册
    • 假定使用了观看者情势,是还是不是反注册
    • 假如使用了陆风X8xJava的话,是或不是肃清订阅
    • 数据库的Cursor是或不是曾经关门
    • 四线程并发下的Cursor是或不是被假释
    • 开垦过的文件流是还是不是关闭
    • WebView使用完是或不是调用了其destory(卡塔尔国函数
    • 是否能特别优化本身的代码
    • 保存在内部存储器中的图片,是不是做过压缩处理再保存在内存里(不然由于图片品质太高,导致OOM)
    • Intent传递的数码太大,会以致页面跳转过慢。太大的数额足以经过长久化的情势传递,比方读写文件。
    • 再三地操作同一个文件或许实行同叁个数据库操作,是不是思谋把它用静态变量活着全局变量的款式缓存在内部存款和储蓄器里。用空间换时间。
    • 坐落于主页面包车型客车控件,是不是寻思用ViewStub来优化运维速度
    • 其三方包build.gradle远程信任第三方包时,版本号建议写死,不要用 号防止由于新本子的第三方包引进了新的主题材料
    • 导入第三方工程时,记得把编码转形成自个儿工程前段时间用的编码
    • 应用第三方包时,是还是不是丰盛其混淆视听准则(若漏掉加上第三方包的混淆法则,会形成第三方包不应该混淆的代码被模糊。在Debug版本未有发觉难题,但是Release版本会产出难点)
    • 应用第三方的包依然JDK的形式时,要跳进它们的源码,看要不要加try-catch,不然大概形成自身使用的垮台。

    小编或然去做了试验,结果:

    2.假诺子线程持有了Activity,要用弱引用来全数比方Request的Activity就活该用弱援用的样式,制止内部存款和储蓄器泄漏。

    但是Android系统规划时,为啥要将全体最先化进度规划成那样?为何当Surface为新的时候,要延缓绘制,重新进行一轮伊始化?

    1.保存在内部存款和储蓄器中的图片,是还是不是做过压缩管理再保存在内部存款和储蓄器里不然也许出于图片品质太高,以致OOM

    question.png

    1.页面退出时,是或不是到位须求的清理操作

    透过地点的剖析,能够分明的是:第一回layout和第四回layout应该是七个例外的职分。因为在这里中档已经有了View.post的Runnable的推行结果,所以有了结论是:一共有多个职责,第一遍performTraversals、大家的Runnable、第叁回performTraversals。

    4.坐落主页面包车型大巴控件,是不是可以虚构用ViewStub来优化运维速度

    那么答案是显然的:View.post(runnableState of Qatar方法的代码会在view的draw方法在此之前调用。

    1.系统的、自个儿写的,注册和反注册的章程,是不是成对现身

    假使遵照大家刚深入分析的performTraversals(卡塔尔国方法的实行流程:

    2.在生命周期的回调里,创设和销毁的代码是或不是相应起来比如:onCreate(卡塔尔(قطر‎里面创设了Adapter,那么相应Adapter的退出管理操作(举例清空Image缓存卡塔尔国,日常就要写在onDestory(卡塔尔国,而不可能写在onDestoryView(卡塔尔国。

    然后有同学问到:

    3.若ListView的item复用了,对Item里View的操作是不是成对现身比如:

    重在是依附attachInfo是还是不是被最初化决定执行方式,那么attachInfo在Activity的onCreate(卡塔尔国推行时毕竟是还是不是null呢?关于attachInfo的开头化,我们得以在View源码中找到,其唯有在dispatchAttachedToWindow()方法才被赋值,而dispatchAttachedToWindow()方法的调用是根源于ViewGroup,继续向上层去找,大家就只可以追溯到ViewRootImpl的perFormTraversals(卡塔尔国方法了,熟识view流程的都知晓,view的三大流程就是经过那几个叫做“施行遍历”的艺术来成功的。不过那么些法子有整个800行代码,就只取首要流程的代码了:

    11.对关照APK大小是还是不是有增大

    together.jpeg

    4.切换成西班牙语等外文字体下,检查外文是不是能全部突显

    static final class RunQueue {
            void post(Runnable action) {
                postDelayed(action, 0);//没有延时
            }
    
            void postDelayed(Runnable action, long delayMillis) {
                HandlerAction handlerAction = new HandlerAction();
                handlerAction.action = action;
                handlerAction.delay = delayMillis;
    
                synchronized (mActions) {
                    mActions.add(handlerAction);
                }
            }
        }
    

    1.多思忖一些情形下,某变量是不是会为空並且在函数体内,管理参数前,必需抬高判空语句

    //先于performMeasure被执行了
            getRunQueue().executeActions(attachInfo.mHandler);
            ...
            performMeasure();
            ...
            performLayout();
            ...
            performDraw();
    
    if (mCloudRun != null) { mHandler.removeCallbacks(mCloudRun); mCloudRun = null;}mCloudRun = new Runnable() { @Override public void run() { CloudAccelerateSwitchRequest request = new CloudAccelerateSwitchRequest(); request.setPriority(RequestTask.PRIORITY_LOW); RequestQueue.getInstance().addRequest; }};mHandler.post(mCloudRun); 
    
        void executeActions(Handler handler) {
                synchronized (mActions) {
                    final ArrayList<HandlerAction> actions = mActions;
                    final int count = actions.size();
    
                    for (int i = 0; i < count; i  ) {
                        final HandlerAction handlerAction = actions.get(i);
                        handler.postDelayed(handlerAction.action, handlerAction.delay);
                    }
    
                    actions.clear();
                }
            }
    

    2.把手提式有线电话机横屏,检查结构是或不是有Bug

    View.post(runnable)方法的代码不会在view的draw方法之前调用。
    

    本文由68399皇家赌场发布于集群主机,转载请注明出处:Review项目清单

    关键词: 68399皇家赌场 日记本 代码 清单 Android知识

上一篇:Android开垦标准文书档案

下一篇:没有了