android
文章平均质量分 62
xiaokongge
这个作者很懒,什么都没留下…
展开
-
Android题目笔记(七)
一:LRUCache原理参考:彻底解析Android缓存机制——LruCache二:模块化实现(好处,原因)参考:模块化实现(好处,原因)三:JVM参考:Jvm系列文章四:视频加密传输参考:五:统计启动时长,标准参考:六:如何保持应用的稳定性参考:七:ThreadLocal 原理参考:八:谈谈classloader参考:九:动态布局...原创 2018-08-31 15:36:23 · 657 阅读 · 0 评论 -
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 · 372 阅读 · 0 评论 -
Android题目笔记(一)
技术准备项目经历 Java基础 设计模式 算法 网络相关知识 Android基础 Android源码 Android性能优化 开源库源码1.事件分发流程参考: Android View 事件分发机制 源码解析 (上) Android ViewGroup事件分发机制 关键词:dispatchTouchEvent、onInterceptTouchEvent、onTouch、dis原创 2017-10-09 14:32:43 · 1171 阅读 · 0 评论 -
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 · 541 阅读 · 0 评论 -
事件总线框架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 · 1099 阅读 · 0 评论 -
android 自定义view实现可左右滑动的Tabbar
继承view,实现可左右滑动的tabbar。1.通过重写onDraw(Canvas canvas)函数绘制item。2.重写onTouchEvent(MotionEvent event)函数监听按下,移动,抬起事件实现tabbar的滑动及点击,但是return要设为true,move事件才会一直监听,最后调用this.invalidate()刷新,相当于重新执行onDraw(Canvas原创 2014-11-18 14:00:57 · 1846 阅读 · 0 评论 -
Android Studio转换Project成AAR
简介一个APP需要集成到另一个APP中使用,这个目前有两种方式集成,一种是使用动态加载技术;另一种是比较原始的,将工程做成一个aar供第三方使用。本篇主要记录后者的基本流程和问题解决。步骤1.需要创建一个壳程序,用来启动我们aar里面的入口程序。 2.将我们的APP以module的方式引入,修改build.gradle文件 apply plugin:'com.and原创 2017-07-25 17:13:16 · 2110 阅读 · 3 评论 -
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 · 419 阅读 · 0 评论 -
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 · 702 阅读 · 0 评论 -
修改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 · 1578 阅读 · 0 评论 -
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 · 411 阅读 · 0 评论 -
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 · 1254 阅读 · 0 评论 -
Android题目笔记(六)
1.自定义view重写哪几个方法?①两个参数的构造方法必须有。onDraw()方法必须有,是用来绘制View图像的 ②如果要改变View 的大小,需要重写onMeasure()方法。 ③如果要改变View在父控件中的位置,需要重写onLayout()方法2.http 的session&cookie的区别参考:cookie 和session 的区别详解 ①cookie数据存放在客户的浏览器上,s原创 2017-11-13 20:00:26 · 477 阅读 · 0 评论 -
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 · 573 阅读 · 0 评论 -
[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 · 3053 阅读 · 0 评论 -
Android主线程等待子线程执行结果
1.场景描述在主线程复杂逻辑中,有时候想获取网络数据或者其他一些必须放在子线程中操作的业务时,一般都要新开线程,等待线程执行完成之后使用Handler发送到主线程,然后主线程再往下执行,这样的多次切换会造成逻辑复杂难懂.可不可以直接在主线程等待一小段时间,等线程处理完成之后再继续往下执行?2.实现主线程等待线程返回结果(以解析域名为例)解析域名的类public class Host原创 2018-01-16 15:45:08 · 16431 阅读 · 0 评论 -
Android解析域名获取IP
1.解析域名获取的IP可能不止一个,所以返回的是一个数组.(网络请求,所以要放在线程中执行) /** * 解析域名获取IP数组 * @param host * @return */ public String[] parseHostGetIPAddress(String host) { String[] ipAddressA原创 2018-01-16 15:01:07 · 13782 阅读 · 0 评论 -
[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 · 2234 阅读 · 0 评论 -
[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 · 633 阅读 · 0 评论 -
[Android自动化测试(一)] robot framework+appium 离线搭建Android环境(windows)
离线安装和在线安装大致流程差不多,离线由于没有网络,用不了pip install命令,所以需要手动下载依赖库,然后一个个手动安装。大致步骤如下。 环境相关下载 https://pan.baidu.com/s/1qXS5GtA1.安装Python根据当前原创 2017-12-26 09:41:08 · 1425 阅读 · 0 评论 -
[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 · 764 阅读 · 0 评论 -
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 · 3193 阅读 · 0 评论 -
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 · 347 阅读 · 0 评论 -
Android Studio multidex分包笔记
一.为什么要分包? 当方法数超过64k(65536)的上限时,超出缓冲区大小,爆棚。(具体原因再研究,占位)二:解决办法。(之一) 1.使用android.support.multidex.jar. 2.build.gradle配置android { defaultConfig { //... multiDexEnabled true; }}dep原创 2017-03-28 02:04:20 · 378 阅读 · 0 评论 -
Android自动升级与监听卸载笔记
自动升级笔记原创 2016-06-27 19:52:49 · 1100 阅读 · 0 评论 -
Android touch冲突解决小记
1.ScrollView嵌套ViewPager ViewPager横向滑动的时候容易变成上下滑动,感觉体验不好,重写ViewPager的onTouchEvent事件,当ViewPager横向滚动的距离大于纵向距离时,设置父容器不拦截滚动事件getParent().requestDisallowInterceptTouchEvent(true); MyViewPager.java源码public原创 2016-06-25 13:39:40 · 393 阅读 · 0 评论 -
Android 焦点小结
1.Focusable 和 FocusableInTouchMode FocusableInTouchMode 推荐《Android touch mode和focusableInTouchMode分析》,这篇讲的很好,感谢大神! 需要注意的是FocusableInTouchMode的使用,例如一个简单的页面三个按钮,前两个设置FocusableInTouchMode=true,最后一个什么都不原创 2016-06-24 15:30:56 · 641 阅读 · 0 评论 -
Android NDK环境配置
Android NDK环境配置NDK下载Eclipse NDK插件NDK环境配置NDK下载 DNK在r7以前的版本需要安装Cygwin,所以只需要下载r8及以上的版本就无需安装Cygwin,使用起来更加方便。 下载地址 http://pan.baidu.com/s/1bn2rvFD#path=%252FEclipse NDK插件 1.下载 http://pan.baidu.c原创 2015-11-03 11:23:15 · 650 阅读 · 0 评论 -
Android NDK开发初记
为什么要用到NDK NDK的弊端 c程序调用java代码简单示例为什么要用到NDK 1.核心代码的保护。由于apk 的java层代码容易被反编译,而c/c++反编译的难度较大,所以一些核心代码可以使用NDK开发。 2.驱动等底层开发。java代码是一次编译,到处运行,这些都是java虚拟机的功劳。不同平台的java虚拟机都封装了底层相关的操作,因此java应用层根本就接触不到底层的东西原创 2015-11-07 10:14:58 · 465 阅读 · 0 评论 -
Android NDK开发之《HelloJni》
- DNK环境搭建 - 创建HelloJni工程 - 可能出现的问题DNK环境搭建原创 2015-11-07 22:14:27 · 526 阅读 · 0 评论 -
Android开发遇到的问题
1.Android不允许修改drawable图片资源文件,例如要在图片上绘制,需要使用copy函数之后获取到资源文件的复制品后再绘制。2.adapter数据源的更新与notifydatasetchanged需放在同一线程中。3.eclipse 导入Android 项目出错,提示gen is aready exist……右键项目名,打开Properties -> Java Build Pat原创 2015-01-13 10:21:45 · 615 阅读 · 0 评论 -
android xml pull解析统计标签参数个数和种类
简单的xml往往只包含几种标签,而且标签里面的属性值个数和种类几乎相同,简单解析请参考http://blog.csdn.net/u013072976/article/details/41014647但是遇到大文件,一个标签里面有多个属性值并且个数差异大,例如那么问题来了!如果这样的有上千行,并且里面的属性值有十几个,有的标签只有其中几个属性。怎么办?总不能一行行看并且记下每个nod原创 2014-12-16 18:51:35 · 740 阅读 · 0 评论 -
android xml使用pull解析
xml的三种解析方式,DOM,SAX,和Pull原创 2014-11-11 17:43:06 · 1087 阅读 · 0 评论 -
Android富文本编辑器总结(二)
Android富文本编辑器总结(一) 上一篇就是编号的转换,数字转字母,数字转罗马数字等,比较实用,其中也借鉴了网上的大神的代码,感谢大神们的分享。 下面就需要使用一个简单工厂稍微加工一下,编号的框架就可以搭建起来了。 编号的框架使用的是抽象工厂,即生产工厂的工厂,逻辑也很简单,这个很好地解决了产品簇的问题。比如我想使用有序编号,只需要使用生产有序编号的工厂来获得编号,相反的也可以使用生产无需原创 2016-06-20 13:45:38 · 1406 阅读 · 5 评论 -
Android富文本编辑器总结(一)
Android的EditText很强大,支持文本缩进,字体设置以及图片的插入,本以为做一个富文本编辑器会很容易,结果真正下手的时候才发现没那么简单,最近半个多月真是被这破玩意儿折磨的欲仙欲死。需求很简单,参照有道云笔记……说得简单,有道云笔记反编译出来,看到libynote_lib.so和libynote_lib_img.so这两个库文件心顿时就凉了一半,我们这几只小菜鸟还只是处于应用层开发,不过原创 2016-06-20 13:40:28 · 7335 阅读 · 0 评论 -
Android富文本编辑器总结(三)
前面已经完成了编号生成的框架,下面开始针对各个问题提出解决方案。键盘的删除键和回车键监听。 键盘我分为三类,Android系统自带aosp键盘、定制手机自带键盘和第三方键盘。其中前两种差不多,要说监听删除键和回车键应该比较简单才对,但是经过测试,myEdittext.setOnKeyListener,onKeyDown和dispatchKeyEvent这三个方法设置了之后,前两种键盘点原创 2016-06-21 16:10:50 · 1865 阅读 · 0 评论 -
Android Studio多渠道打包
需求:在编译时,能够选择不同的版本渠道选择生成不同平台的app,而不需要手动去修改代码。 示例:push的大致分为华为,小米和其他手机,因为华为和小米都有自己的push sdk,而其他手机的push就需要使用自己的方式,现在需要分别生成三个平台的app。第一种方式是在代码里面写一个变量,通过修改该变量值来分别生成不同的app,这样就导致了每次都需要手动修改代码编译,较浪费时间。第二种就是多渠道打包原创 2016-12-15 00:46:54 · 535 阅读 · 0 评论 -
Android lib库代码加密
需求:提供一个包含代码和资源文件的lib库供第三方使用,但是又不想让第三方看到源代码。 方案一:使用Eclipse的lib库的方式。 方案二:使用Android Studio的aar包的方式。一:使用Eclipse的lib库的方式。第一步:创建lib库1.创建一个Android工程TestLib(包名com.example.testlib),简单的创建一些资源文件,例如布局、图片、colors等原创 2016-12-15 00:20:45 · 3952 阅读 · 0 评论 -
Eclipse转战Android Studio心酸史
eclipse用了三四年了,对于转战Android Studio真的是被逼无奈,不过AS作为Google的亲儿子,对于Android开发肯定也有很大的好处,特此记录转换时遇到的问题及解决方案。 1.转战原因 当一个工程足够大时,总的方法数超过了65535个,编译的时候就会报错: java.lang.IllegalArgumentException: method ID no原创 2016-06-12 10:24:23 · 513 阅读 · 0 评论 -
Android json解析动态获取key以及解析技巧
此篇讲解保存json数据的小技巧。使用JSONObject和JSONArray解析实例:{"code":"1","name":"kongge","age":22,"date":[{"userId":"123","userPwd":"456"},{"userId":"321","userPwd":"789"}]} // @1{"code":"1","name":"ggg","age":原创 2015-02-06 11:04:26 · 11730 阅读 · 0 评论