- 博客(56)
- 资源 (10)
- 收藏
- 关注
原创 Android题目笔记(七)
一:LRUCache原理参考:彻底解析Android缓存机制——LruCache二:模块化实现(好处,原因)参考:模块化实现(好处,原因)三:JVM参考:Jvm系列文章四:视频加密传输参考:五:统计启动时长,标准参考:六:如何保持应用的稳定性参考:七:ThreadLocal 原理参考:八:谈谈classloader参考:九:动态布局...
2018-08-31 15:36:23
703
原创 Android synchronized 与 ConcurrentModificationException
一个class类里面有个List对象,List的add,remove都使用了synchronized关键字,class的遍历List方法也加了synchronized,在调用notifyOnDataChangeListener的时候,还是报错ConcurrentModificationException.例如下面的类package com.kongge.javalib;import jav...
2018-02-11 18:56:45
622
原创 Android主线程等待子线程执行结果
1.场景描述在主线程复杂逻辑中,有时候想获取网络数据或者其他一些必须放在子线程中操作的业务时,一般都要新开线程,等待线程执行完成之后使用Handler发送到主线程,然后主线程再往下执行,这样的多次切换会造成逻辑复杂难懂.可不可以直接在主线程等待一小段时间,等线程处理完成之后再继续往下执行?2.实现主线程等待线程返回结果(以解析域名为例)解析域名的类public class Host
2018-01-16 15:45:08
16499
原创 Android解析域名获取IP
1.解析域名获取的IP可能不止一个,所以返回的是一个数组.(网络请求,所以要放在线程中执行) /** * 解析域名获取IP数组 * @param host * @return */ public String[] parseHostGetIPAddress(String host) { String[] ipAddressA
2018-01-16 15:01:07
13966
原创 [Android自动化测试(零)] robot framework+appium问题及解决
1.Evaluating expression failed: SyntaxError: EOL while scanning string literal${name}set variablehello\nWorld!log${name}Run Keyword If‘${name}’ != ‘hello\nWorld!’logno网上有的说是引号个数
2018-01-05 17:33:28
811
原创 [Android自动化测试(四)] robot framework+appium元素定位
查看工具:Android sdk目录/tools/uiautomatorviewer.bat,新版的在Android sdk目录\tools\bin下面 示例图: 如果需要定位红框中的按钮并点击,有如下方式(注意,点击之前一般需要等待控件可见的时候,使用Wait Until Element Is Visible): 第一种:根据文本直接定位(text属性是’click’),如果有多个相同的
2018-01-04 14:59:38
2261
原创 [Android自动化测试(三)] robot framework+appium常用关键字
ride表格,关键字可以使用’F5’查看使用方式.1.启动应用 Open ApplicationOpen Application http://localhost:4723/wd/hub platformName=Android platformVersion=4.4.4 deviceName=xxx appPackage=com.xxx.xxx appActivity=c
2018-01-04 11:39:00
3105
原创 [Android自动化测试(二)] robot framework+appium项目创建
一:测试demo创建1.创建Android项目包名为“com.kongge.browsertest”,这个可以随便定义,本文以这个位置,测试的时候需要填入包名,如果修改成其他的,后面测试输入内容也需要相应修改。2.布局文件activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:
2017-12-27 15:12:15
664
原创 [Android自动化测试(一)] robot framework+appium 离线搭建Android环境(windows)
离线安装和在线安装大致流程差不多,离线由于没有网络,用不了pip install命令,所以需要手动下载依赖库,然后一个个手动安装。大致步骤如下。 环境相关下载 https://pan.baidu.com/s/1qXS5GtA1.安装Python根据当前
2017-12-26 09:41:08
1479
原创 Android题目笔记(六)
1.自定义view重写哪几个方法?①两个参数的构造方法必须有。onDraw()方法必须有,是用来绘制View图像的 ②如果要改变View 的大小,需要重写onMeasure()方法。 ③如果要改变View在父控件中的位置,需要重写onLayout()方法2.http 的session&cookie的区别参考:cookie 和session 的区别详解 ①cookie数据存放在客户的浏览器上,s
2017-11-13 20:00:26
491
原创 Android题目笔记(五)
50.点击事件被拦截,但是相传到下面的view,如何操作? 51.Glide源码? 52.ActicityThread相关? 53.volatile的原理 54.synchronize的原理 55.lock原理 56.翻转一个单项链表 1->2->3->4->5->null =====> 5->4->3->2->1->null 57.string to integer
2017-10-30 20:23:36
1283
原创 Android题目笔记(四)
1.简述tcp四次挥手?35.threadlocal原理 36.内存泄漏的可能原因? 37.用IDE如何分析内存泄漏? 38.OOM的可能原因? 39.线程死锁的4个条件? 40.差值器&估值器 41.简述消息机制相关 42.进程间通信方式? 43.Binder相关? 44.触摸事件的分发? 45.简述Activity启动全部过程? 46.okhttp源码
2017-10-26 17:04:13
390
原创 Android题目笔记(三)
1.如何保证多线程读写文件的安全?24.线程和进程的区别? 25.为什么要有线程,而不是仅仅用进程? 26.算法判断单链表成环与否? 27.如何实现线程同步? 28.hashmap数据结构? 29.arraylist 与 linkedlist 异同? 30.object类的equal 和hashcode 方法重写,为什么? 31.hashmap如何put数据(从hashm
2017-10-23 13:16:11
428
原创 Android题目笔记(二)
11.ANR 如何产生? 12.String buffer 与string builder 的区别? 13.如何保证线程安全? 14.java四中引用 15.Jni 用过么? 16.多进程场景遇见过么? 17.关于handler,在任何地方new handler 都是什么线程下 18.sqlite升级,增加字段的语句 19.bitmap recycler 相关 2
2017-10-17 15:49:14
560
原创 Android题目笔记(一)
技术准备项目经历 Java基础 设计模式 算法 网络相关知识 Android基础 Android源码 Android性能优化 开源库源码1.事件分发流程参考: Android View 事件分发机制 源码解析 (上) Android ViewGroup事件分发机制 关键词:dispatchTouchEvent、onInterceptTouchEvent、onTouch、dis
2017-10-09 14:32:43
1206
原创 事件总线框架EventBus和Otto学习笔记
功能说明:模块间的高效通信并解耦。一:EventBusGitHub地址与使用方法:https://github.com/greenrobot/EventBus 使用基本步骤(Android Studio为例) 1.build.gradle里面添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'}2.注册与注销EventBu
2017-09-29 16:55:56
1122
原创 Android Studio转换Project成AAR
简介一个APP需要集成到另一个APP中使用,这个目前有两种方式集成,一种是使用动态加载技术;另一种是比较原始的,将工程做成一个aar供第三方使用。本篇主要记录后者的基本流程和问题解决。步骤1.需要创建一个壳程序,用来启动我们aar里面的入口程序。 2.将我们的APP以module的方式引入,修改build.gradle文件 apply plugin:'com.and
2017-07-25 17:13:16
2149
原创 Android Touch事件分发笔记
好记性不如烂笔头,仅以记之。 实例布局如下,每一个View都设置了点击事件监听:<?xml version="1.0" encoding="utf-8"?><com.kongge.touchtestmodule.view.TouchLinearlayout xmlns:android="http://schemas.android.com/apk/res/android" xml
2017-06-10 17:28:34
448
原创 修改hosts之后,模拟器连不上问题解决
genymotion配置hosts 1.启动genymotion模拟器 2.进入genymotion安装目录:Genymobile\Genymotion\tools 3.打开命令窗口。(shift+邮件->在此处打开命令窗口) 4.adb shell 5.su 6.mount -o remount,rw /system 7.echo -e \n >> /system/etc/hosts
2017-06-02 15:36:37
1613
原创 ListView笔记
1.异常报错java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread
2017-04-07 15:46:22
370
原创 Android Studio multidex分包笔记
一.为什么要分包? 当方法数超过64k(65536)的上限时,超出缓冲区大小,爆棚。(具体原因再研究,占位)二:解决办法。(之一) 1.使用android.support.multidex.jar. 2.build.gradle配置android { defaultConfig { //... multiDexEnabled true; }}dep
2017-03-28 02:04:20
396
原创 Android Studio多渠道打包
需求:在编译时,能够选择不同的版本渠道选择生成不同平台的app,而不需要手动去修改代码。 示例:push的大致分为华为,小米和其他手机,因为华为和小米都有自己的push sdk,而其他手机的push就需要使用自己的方式,现在需要分别生成三个平台的app。第一种方式是在代码里面写一个变量,通过修改该变量值来分别生成不同的app,这样就导致了每次都需要手动修改代码编译,较浪费时间。第二种就是多渠道打包
2016-12-15 00:46:54
558
原创 Android lib库代码加密
需求:提供一个包含代码和资源文件的lib库供第三方使用,但是又不想让第三方看到源代码。 方案一:使用Eclipse的lib库的方式。 方案二:使用Android Studio的aar包的方式。一:使用Eclipse的lib库的方式。第一步:创建lib库1.创建一个Android工程TestLib(包名com.example.testlib),简单的创建一些资源文件,例如布局、图片、colors等
2016-12-15 00:20:45
4009
原创 算法学习之排序(一)(java)
好记性不如烂笔头,仅以记之排序接口/** * 排序接口 * @author kongge * */public interface ISort { public void sort(int[] numbers);}/** * 数据接口 * @author kongge * */public interface ISortConstants { public sta
2016-09-30 01:25:19
601
原创 Android学习笔记(兼容篇)
好记性不如烂笔头,仅以记之一:摩托罗拉Android 7.0系统剪切图片后崩溃。日志如下:FATAL EXCEPTION: main Process: com.google.android.apps.photos, PID: 8332java.lang.RuntimeException: Unable to resume activity {com.google.android.apps.
2016-09-14 13:59:09
3400
原创 Android学习笔记(Android Studio篇)
好记性不如烂笔头,仅以记之。1:Android Studio下添加assets目录没有就新建目录,位置在src\main\assets,工程目录有一个xxx.iml文件,里面指定了路径<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />2:aar的生成及使用。aar可以说是jar包的升级版,不仅可以包含代码资源,
2016-09-01 10:23:30
733
原创 Android学习笔记(网络篇)
好记性不如烂笔头,仅以记之。一:android.net.http.AndroidHttpClient Android6.0 API23以后失效解:在android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类 推荐使用HttpUrlConnection,如果要继续使用需要Apache HttpClient,需要在eclipse下libs里添加org.a
2016-08-29 11:03:45
405
原创 Android学习笔记(文件篇)
好记性不如烂笔头,仅以记之。文件操作一:文件的删除delete方法 解:file如果是一个文件,调用delete方法可以成功删除,但是文件目录可能删除失败,这个是因为文件目录必须是空文件夹才能删除。如果文件目录不为空,可以使用递归的方式依次删除。 public static void delete(File file) { if (file.isFile()) {
2016-08-29 10:15:17
407
原创 Android touch冲突解决小记
1.ScrollView嵌套ViewPager ViewPager横向滑动的时候容易变成上下滑动,感觉体验不好,重写ViewPager的onTouchEvent事件,当ViewPager横向滚动的距离大于纵向距离时,设置父容器不拦截滚动事件getParent().requestDisallowInterceptTouchEvent(true); MyViewPager.java源码public
2016-06-25 13:39:40
412
原创 Android 焦点小结
1.Focusable 和 FocusableInTouchMode FocusableInTouchMode 推荐《Android touch mode和focusableInTouchMode分析》,这篇讲的很好,感谢大神! 需要注意的是FocusableInTouchMode的使用,例如一个简单的页面三个按钮,前两个设置FocusableInTouchMode=true,最后一个什么都不
2016-06-24 15:30:56
675
原创 Android富文本编辑器总结(五)
一: EditText文本转HTML Android中有Html.toHtml()的方法,可以将颜色、加粗等转化为html标签,简化了我们标签的插入算法,但是也存在一些问题。 1. @XXX 和 $123456 的问题 @XXX是作为一个整体,创建了一张Bitmap然后使用ImageSpan插入到文本中的,这样就可以实现光标只能定位在@XXX之前或之后,要删除就整体删除。但是通过Html.to
2016-06-21 22:04:58
4178
2
原创 Android富文本编辑器总结(四)
段落缩进的实现 段落缩进,第一行文字距左边框保持一段距离,其他行距离左边框也有一段距离。 当需求只有一级缩进时,使用图片(ImageSpan)占位感觉比较好,自己画一个带有编号的ImageSpan插在段落在最前方,不过这样也存在一个问题,就是光标可以定位到编号之前,并且可以点击删除将图片移动到上一行的末尾,所以需要特殊处理。 当有多级缩进时,例如 1。 adsfasdfasdfasdfadf
2016-06-21 16:16:01
2143
2
原创 Android富文本编辑器总结(三)
前面已经完成了编号生成的框架,下面开始针对各个问题提出解决方案。键盘的删除键和回车键监听。 键盘我分为三类,Android系统自带aosp键盘、定制手机自带键盘和第三方键盘。其中前两种差不多,要说监听删除键和回车键应该比较简单才对,但是经过测试,myEdittext.setOnKeyListener,onKeyDown和dispatchKeyEvent这三个方法设置了之后,前两种键盘点
2016-06-21 16:10:50
1887
原创 Android富文本编辑器总结(二)
Android富文本编辑器总结(一) 上一篇就是编号的转换,数字转字母,数字转罗马数字等,比较实用,其中也借鉴了网上的大神的代码,感谢大神们的分享。 下面就需要使用一个简单工厂稍微加工一下,编号的框架就可以搭建起来了。 编号的框架使用的是抽象工厂,即生产工厂的工厂,逻辑也很简单,这个很好地解决了产品簇的问题。比如我想使用有序编号,只需要使用生产有序编号的工厂来获得编号,相反的也可以使用生产无需
2016-06-20 13:45:38
1438
5
原创 Android富文本编辑器总结(一)
Android的EditText很强大,支持文本缩进,字体设置以及图片的插入,本以为做一个富文本编辑器会很容易,结果真正下手的时候才发现没那么简单,最近半个多月真是被这破玩意儿折磨的欲仙欲死。需求很简单,参照有道云笔记……说得简单,有道云笔记反编译出来,看到libynote_lib.so和libynote_lib_img.so这两个库文件心顿时就凉了一半,我们这几只小菜鸟还只是处于应用层开发,不过
2016-06-20 13:40:28
7417
原创 Eclipse转战Android Studio心酸史
eclipse用了三四年了,对于转战Android Studio真的是被逼无奈,不过AS作为Google的亲儿子,对于Android开发肯定也有很大的好处,特此记录转换时遇到的问题及解决方案。 1.转战原因 当一个工程足够大时,总的方法数超过了65535个,编译的时候就会报错: java.lang.IllegalArgumentException: method ID no
2016-06-12 10:24:23
523
原创 final,finally和finalize的使用
1.final使用 浅析Java中的final关键字 请戳↑,写的挺好的,感谢原作者!2.finally使用 1.普通使用 try { int a = 10 / 0; } catch (Exception e) { e.printStackTrace(); } finally {
2015-11-25 19:11:47
487
原创 获取对象的几种方式与构造函数Constructor的调用
1.获取对象的方式 1.获取对象的方式有new,反射,反序列化和克隆。2.构造函数Constructor的调用 1.获取对象时构造函数调用示意: 方式 父类构造体是否被调用 该对象构造体是否被调用 new Y Y 反射 Y Y 反序列化 Y N 克隆 N N 2.代码public class Animal {
2015-11-25 10:55:27
1060
原创 多层循环的跳出与跳过当前循环
1.多层循环的跳出 1.将多层循环作为一个方法,在里层使用return关键字跳出。 2.使用break标签。 int n = 0; outer: // outer并不是关键字,自定义的名称,使用冒号后面紧跟循环体,中间不能夹杂其他语句 while (true) { while (true) { wh
2015-11-25 10:48:08
4444
ScrollView嵌套ViewPager和ListView
2016-06-25
Android sqlite 便笺
2015-04-04
Tween动画及SeekBar控制图片旋转
2014-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人