自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zfenger

程序员菜鸟上手:菜鸟程序猿,可能理解有错误,望谅解,求指正

  • 博客(29)
  • 收藏
  • 关注

原创 Android常考问题(1) - 触摸事件

Android的触摸事件分成了三个步骤:从按下去(ACTION_DOWN)到移动(ACTION_MOVE)最后离开屏幕(ACTION_UP),这三个就是三种触摸事件,属于一个名叫MotionEvent的类。Android的触摸机制也有三个阶段,我们用一整个触摸事件的发生过程来说明一下。发生触摸事件后,一般由Activity发起dispatchTouchEvent这个方法,这个方法过程叫分发...

2019-08-16 18:04:44 277

原创 BadTokenException 相关

错误分析:AS中全局搜索BadTokenException,会在ViewRootImpl的setView方法中看到好几个抛出这个异常的代码: int res = mWindowSession.addToDisplay(); switch (res) { case WindowManagerGlobal.ADD_BAD_APP_TOKEN: case WindowManagerGlobal.ADD_BAD_SUBW...

2021-03-15 16:17:55 375

原创 《单元测试的艺术》阅读三

3.1 名词定义存根 (stub) 是对系统中存在的一个依赖项的可控制的替代物。通过使用存根,在测试代码的时候无需直接处理这个依赖项。重构 (refactoring) 在不改变代码功能的前提下对代码的修改。接缝 (seam) 代码中可以插入不同功能的地方。一个类是开放给外部的,而源代码是封闭给自身的,所以根据这个开闭原则,实现的代码中就会出现接缝。3.2 发现代码的依赖项一个测试过程中发现方法需要使用文件系统才能正常测试,那么这就是集成测试了。这时候就出现了抑制测试设计:代码对外部资源有

2020-07-03 12:08:45 207

原创 《单元测试的艺术》阅读二

1.1 名词定义单元测试框架 用于编写、运行和查看单元测试及其结果的,容易编写的,可重复使用的,并能覆盖到测试代码的所有重要部分的框架状态验证 通过检查被测试的系统与协作方在被测试方法执行后行为的改变,判定被测试方法是否正确工作1.2 第一个单元测试这是一段需要被测试的代码(在这里需要注意对于类和方法的明明规则,也就是编程规则):public class LogAnalyzer { public boolean IsValidLogFileName(String file

2020-06-28 21:44:09 233

原创 《单元测试的艺术》阅读一

1.1 名词定义SUT 被测试系统 System Under Test(或者CUT,也就是被测试的东西)TDD 测试驱动开发 Test-Driven Development1.2 理解单元测试工作单元是一个什么样的存在?如果按照字面意思来看,单元测试是一个小的部分,也就是一个单元,但这个单元又有着不同的范围,它可以是一个方法,可以是一个类,甚至可以是多个类,一整个组件,当然这种时候都已经不能算是纯粹意义上的单元测试了。在《单元测试的艺术》中,认为被测试的单元不能尽可能的小。如果单元测试尽可

2020-06-24 21:32:08 283

转载 属性动画源码分析

* 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布关于属性动画的介绍有很多,但是大部分都是介绍如何使用属性动画。本文通过追溯源码,剖析属性动画内部实现机制。属性动画有两个比较重要的动画执行类ObjectAnimatorValueAnimator其中 ObjectAnimator 是 ValueAnimator 的子类。ObjectAni...

2020-04-16 16:48:25 259

原创 Android ViewPager使用及爬坑

今天在学习一个常用的ViewPager控件,遇到了一些小坑,在这里记录下来。根本原因在于ViewPager的缓存机制。因为缓存,出现了一个状况:左滑时会闪退并且报错java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the chil...

2020-01-06 17:44:06 1357

原创 Android常考问题(10)- Android启动模式

启动模式四种:标准的standard,栈顶复用singleTop,栈内复用singleTask,单例模式singleInstance。这次刚好项目中用到了,先说一下具体情况。我这边需要做个页面跳转,很简单的intent,但是从Activity A到Activity B之后,按下返回键,会回到A,这是正常的standard模式的启动,,但是如果我按下了一个自定义按钮,然后用intent跳回A,这...

2019-11-13 15:44:31 197

原创 新手视频通话工作三个月相关

最近看了一小段时间的视频通话相关内容,但是之后又直接不参与这个项目了。对于自己的记忆力我不抱任何自信,因此写文记录一些相关内容。最开始参与这个项目是作为新人,参与视频通话App的开发过程,主要工作是设置界面和通话记录界面的开发过程,整个任务都比较简单,主要是对于界面的布局和控件的使用。主要用的控件也就是RecyclerView和ListView,然后就是比如SharedPreference之类...

2019-10-22 20:27:37 233

原创 Android常考问题(9)- Activity生命周期

面试android几乎必被问到的问题,Android的生命周期。先把最基础的路径死记下来:onCreate、onRestart 、onStart、onResume、onPause、onStop、onDestroy一个activity的生命过程就这么长。写安卓的第一行hello world就是在onCreate方法里面写的,从创建(create),到启动(start),到展示(resume)...

2019-09-27 19:57:21 207

原创 Android常考问题(8)-设计模式:Builder模式(顺带学习了一下String的比较和final)

今天的主要目的是学习设计模式中的Builder模式。由于java基础不牢固,在学习过程中要回过头去学习java内容,因此凑成了这样一篇驳杂的文章。Builder模式首先是Builder设计模式的作用:将复杂对象的构建和表示分离,使得不同构建过程创建不同的表示对象。(概念啥的我就看看)实现过程比较简单,只要把对象类,builder抽象接口,ConcreteBuilder(接口的实现),和...

2019-09-18 19:11:32 264

原创 BrightScript相关-MarkupGrid使用

MarkupGrid是BrightScript里面的一个控件,在电视端这个控件可以起到很大作用。它是一个通用的网格节点,可用于显示排列到2D网格中的一组项目。每个网格项的内容是itemComponentName字段指定的XML组件的对象,XML组件的对象用于显示网格数据模型中每个项目的数据。利用这个控件我们可以实现网格布局的很多种内容。MarkupGrid节点中的列数是固定的,行数根据需要...

2019-09-04 20:44:11 279

转载 Android常考问题(7)-动画详细介绍

这次学习的是动画,但是不得不说,看完这篇文章我没有重新写的打算。不是因为太长,而是因为太详细。感觉自己无话可说了。因此这篇文章作为转载,很感谢作者。动画种类Android 动画可以归纳为以下几种:(点击链接跳转到github查看源码)视图动画(View 动画) 帧动画(Frame 动画、Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭...

2019-09-03 15:21:27 245

原创 RecyclerView及其复用-问题解决

现在开始解决问题。首先按照之前解释的逻辑,能够分辨出使用RecyclerView的时候出现显示错乱是因为复用问题。这里刚好对于问题进行解决。(这是在电视端开发,会有焦点的获取问题)首先描述下问题。问题其实很简单,就是一个View的List里面每个item都有一个按钮控件,这个按钮可以显示开启或者关闭,这里首先产品的需求不明确,只给了几个设计图。按钮大概长这样,就是遥控按一个按键删除按钮...

2019-09-02 14:24:48 3091

原创 Android常考问题(6)-RecyclerView及其复用-源码分析

前一篇的ListView只是之前的学习的回顾和复习,RecyclerView才是目前学习的主要内容。这部分内容也比较多,因此详细分两部分来总结一下。而且对比之前的ListView,应该能更好理解RecyclerView的内容。首先认识一下RecyclerView。这个东西有点杂乱。我们知道ListView可以用来显示很多的重复数据,按照item排列就行了。而RecyclerView综合了Lis...

2019-08-31 16:01:10 564

原创 Android常考问题(5)-ListView及其复用

ListView虽然已经几乎被RecycleView取代,但是其复用的核心思想还是很棒的,而且也经常在入门级面试中被提问。在看RecycleView的时候云里雾里的,就先理清ListView。这次的起因是因为RecycleView复用出现的严重bug。其实很久之前就捣鼓过一次ListView的复用问题,现在回过头看看真的是不可思议,我当时是怎么捣鼓出的多层嵌套的ListView的同时还解决了复用引...

2019-08-28 19:33:24 356

原创 Android常考问题(4)-序列化和反序列化

网络上大部分对于序列化的解释都是大同小异的官方解释。我的理解是:比如数据传输的时候,传输过程都是字节流数据,在你的代码的里是对象格式,而在传输的时候要变成字节流数据。因此发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。序列化存储也是类似的,硬盘等上面保存的也是字节流,也需要序列化之后存入硬盘。 序列化主要有两种方法:S...

2019-08-26 17:49:19 205

原创 Android常考问题(3)-view的绘制

Android中常会自定义一个控件,这里详细说一下view的绘制流程。(主要是敲一遍源码加强记忆)首先view主要有两种:view和viewGroup(详细介绍不再赘述),从新建一个activity开始,我们会用setContentView展开一个内容视图,这就是一个viewGroup,也是用户所看到的界面。首先每个activity都会创建出一个PhoneWindow窗口,这是内容的最基本窗口...

2019-08-23 19:28:14 150

原创 Android常考问题(2)-SharedPreferences

首先说一下,Android五种存储文件方式:1.文件存储。用保存到文件中的方式进行存储,openFileInput()和openFileOutput()方法来读取设备上的文件。2.SQLite存储。通过数据库存储数据,常用的工具GreenDao,这个以后再看吧。3.ContentProvider存储数据,这一块主要用于数据共享。4.网络存储。5.SharedPreferences存...

2019-08-21 16:15:09 696

原创 BrightScript相关进阶

BrightScript是Roku开发使用的语言,受众小,推广程度低,在国内尤其如此,几乎见不到这方面的资料。因此我猜,就算我随便扯扯,应该也能混个原创?开个玩笑。BRS的环境搭建相关就不再赘述,这里主要讲语法相关了。首先我开发工具使用的是VScode,在其中新建文件夹.vscode 和文件launch.json,在.json中复制以下代码{ "version": "0.2....

2019-08-15 21:02:55 481

翻译 Roku和BrightScript相关介绍--翻译

Roku是美国领先的电视流媒体平台。通过将用户与他们喜爱的流媒体内容联系起来,使内容发布商能够拥有大量的受众群体,并为广告客户提供吸引消费者的独特功能。凭借超过2900万的活跃账户,Roku的覆盖范围可与美国最大的有线电视提供商相媲美。Roku可以帮助内容发布商提供一套完善的工具,使其易于分发内容并从内容中获利。Roku鼓励合作伙伴在其平台上获利。他们提供多种货币化途径,无论客户选择收取订阅费...

2019-07-29 17:10:17 1146

转载 深入浅出Java GC自动回收机制--转载

GC :Garbage Collections 字面意思是垃圾回收器,释放垃圾占用的空间。让创建的对象不需要像c、c++那样delete、free掉 。对于c、c++的开发人员来说内存是开发人员分配的,也就是说还要对内存进行维护和释放。对于Java程序员来说,一个对象的内存分配是在虚拟机的自动内存分配机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现内存泄...

2019-07-24 17:02:15 179

原创 BrightScript

目前看来较为主流的安卓开发环境还是Java,但是由于谷歌的大力推进,目前kotlin的上升趋势越来越强烈,因此安卓开发者目前的前景很不明朗,究竟kotlin什么时候会完全代替Java呢?该不该立刻转型呢?这都是个问题。因此我今天来说一下BrightScript。扯远了。由于工作需要,公司分配brightscript的工作开发。在我看来这是个我连名字都没听过的,听介绍还是很久远的语言。我也不知道...

2019-07-22 16:49:50 298

原创 关于Butterknife 的一些使用

今天学习了一下黄油刀的相关,出现了几个问题在这里记录一下。1.在我按照github上的配置来导入相关包的时候出现了以下的报错信息添加依赖过程:在项目的project 的build.gredle 文件中的dependencies标签下添加。classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.1' //Butterk...

2019-05-24 11:30:16 234

原创 悬浮框的要点(顺便LinearLayout的透明度设置)

LinearLayout设置透明度:点击打开链接悬浮框:https://www.jianshu.com/p/881403db1314透明度设置主要是#50ffffff  50代表50%的透明度。悬浮框最主要的有三个点。1.floatManager:自己创建的悬浮窗管理类。里面一般包含方法:addview,removeview,updateview。/** * 悬浮窗管理类 */public ...

2018-07-09 11:53:02 2422

原创 StartActivityForResult和Adapter写法

实现一个目标:地图图层切换。首先图层切换代码通过高德api已知:             aMap.setMapType(AMap.MAP_TYPE_SATELLITE);//卫星地图 aMap.setMapType(AMap.MAP_TYPE_NORMAL);//标准地图想法:通过点击进入下一个activity然后返回参数跳转。因此用到了StartActivityForResult...

2018-07-06 17:15:27 624

原创 screenOrientation属性

问题1:android:screenOrientation属性:用于控制activity启动时方向unspecified,默认值,由系统决定,不同手机可能不一致landscape,强制横屏显示portrait,强制竖屏显behind,与前一个activity方向相同sensor,根据物理传感器方向转动,用户90度、180度、270度旋转手机方向,activity都更着变化sensorLandsca...

2018-07-04 10:48:46 462

原创 BroadcastReceiver销毁

问题1:高德地图定位出现问题:定位失败errorcode :7https://lbs.amap.com/api/android-sdk/guide/map-tools/error-code(高德地图错误码对照表)7是指key授权问题。key值授权需要在高德的开发者平台上进行授权操作,然后在代码的mainfest里面加入授权码如下所示,开发者都有自己的授权问题。而且授权码都是与计算机中的de...

2018-07-03 16:27:57 870

原创 UnsatisfiedLinkError和Device support

开发安卓有一段时间了,有了一点点基础,但是总是忘掉解决过的问题,所以开了个博客,把自己遇到的问题记录下来,把解决方法记录下来。这两天碰到的是一个新的问题,因为暑假期间刚拿到新的项目,于是把项目拉到自己电脑里开始调试运行。一开始都很正常,台式电脑成功运行。可是换到笔记本上就出现了问题。经过一段调试后我的两部手机,小米6(安卓8.0)能够正常运行软件,而三星(安卓5.1)就不能...

2018-07-03 15:45:07 227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除