android
文章平均质量分 59
87now
学习者,总结者,研究者,创新者。
展开
-
【Android】cookie/session/token技术点总结
1、cookie和session机制(1)HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。Cookie 主...原创 2019-05-23 15:23:55 · 795 阅读 · 0 评论 -
【Android】SQLiteOpenHelper技术点总结
1、SQLiteOpenHelper是什么?A helper class to manage database creation and version management.一个数据库创建和版本管理的帮助类。2、SQLiteOpenHelper作用SQLiteOpenHelper既然是帮助类,并且是管理数据库的创建和版本,那么为什么类名包含"Open"这个单词呢?为什么不叫SQLit...原创 2018-08-21 15:03:49 · 439 阅读 · 0 评论 -
【Android】带你一步步写JNI程序
网上关于NDK、so、JNI相关的博文很多,很少有一篇具有详细的步骤去带领大家学习。绝知此事要躬行,本文将带大家一步步去写一个JNI程序,步骤详细,后文并附可运行的demo源码。一、写在前面的话1、AndroidStudio环境:Android Studio 3.1.4Build #AI-173.4907809, built on July 24, 2018JRE: 1.8.0_...原创 2018-08-23 22:36:47 · 910 阅读 · 0 评论 -
【Android】Android so技术点总结
当我们需要使用NDK开发某些功能,或APP使用的第三方SDK中包含了so文件,我们需要去关注Android so文件相关问题。1、ABI(Application Binary Interface,应用程序二进制接口)随着Android系统的快速发展,搭载Android的硬件平台也早已多样化了,出现了多种CPU架构。每一种CPU架构,都定义了一种ABI,ABI定义了其所对应的CPU架构能够执...原创 2018-08-22 16:26:40 · 433 阅读 · 0 评论 -
【Android】消息推送1-Socket长连接技术点总结
鉴于以往习惯,文章言简意赅,不拖泥带水,本文主要写Android消息推送中Socket长连接相关技术点。1、TCP/IP 协议(1)IP协议IP 协议提供了主机和主机间的通信。采用IP地址来唯一标识一台主机。(2)TCP协议TCP 协议在 IP 协议提供的主机间通信功能的基础上,完成这两个主机上进程对进程的通信。我们采用端口号来标识数据属于哪个进程。2、TCP三次握手 & 四次挥手说明:S...原创 2018-07-15 11:21:24 · 2589 阅读 · 0 评论 -
Android使用Catmull_Rom插值算法画光滑曲线图
一、算法核心思想1、每次插值需要四个基础点(暂假设为A、B、C、D)。2、根据已知的四个基础点,插值算法每次只能实现在中间两个点间画出光滑的曲线(此处就是B点和C点)。二、工程代码1、“Catmull_Rom插值算法”画光滑曲线的类(Catmull_Rom.java)package com.example.test;import java.util.ArrayList;原创 2015-05-30 13:03:18 · 4506 阅读 · 1 评论 -
TextView属性大全
TextView属性大全今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先。发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符号等就会有问题,目前还没有什么解决方法。如果有高人研究出方法来解决,请指教一下哈。android:autoLink设置是否当文本为URL链接转载 2014-06-20 18:27:05 · 936 阅读 · 0 评论 -
Android Menu
Android Menu1、Android一共有三种形式的菜单:(1)选项菜单(OptionsMenu)(2)上下文菜单(ContextMenu)(3)子菜单(SubMenu)2、OptionsMenu详解(1)public boolean onCreateOptionsMenu(Menu menu)此方法用于初始化菜单,其中menu参数就是即将要显示的Menu实例。返原创 2014-07-09 19:22:05 · 1027 阅读 · 0 评论 -
Android layout属性大全
第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBott转载 2014-07-08 16:12:50 · 37916 阅读 · 5 评论 -
Android中动态改变string.xml中的字符串
1、首先需要在string.xml文件的前面添加如下头部:2、strings.xml文件中可以用下面两种方法来设置参数的位置:选择号码:%d %d选择号码:%1$d %2$d3、动态改变字符串的方法如下:getString(R.string.choose_numbe, 变量1, 变量2);//这样设置后就可以将参数传入xml4、%后面是占位符的位置,从1原创 2014-07-02 13:31:10 · 11904 阅读 · 2 评论 -
git pull时本地文件和服务器文件冲突解决方法
git pull时本地文件和服务器文件冲突解决方法:在git pull代码时,出错信息如下:error: Your local changes to 'contextTempl.java' would be overwritten by merge. Aborting.Please, commit your changes or stash them before you can m原创 2014-06-10 18:11:58 · 7025 阅读 · 0 评论 -
通过ADB WiFi Connect插件无线真机调试
准备工作电脑端要把SDK下的工具adb.exe配置进环境变量安装好插件重启IDE后使用USB连上电脑打开插件窗口和电脑命令行窗口正式配置通过命令检查手机连接情况,序列号码如图 确定USB模式连接 查看手机IP 设置连接端口 建...转载 2018-09-04 09:59:35 · 2527 阅读 · 0 评论 -
【Android】startService和bindService混合使用总结
先自定义一个service:public class MyService extends Service { private Service startService; private Service bindService; @Nullable @Override public IBinder onBind(Intent intent) { ...原创 2018-10-05 17:56:44 · 4186 阅读 · 1 评论 -
【Android】Gradle构建生命周期和hook点
1、Gradle 的生命周期分三个阶段,初始化阶段,配置阶段,执行阶段。(1)初始化阶段通过 settings.gradle 判断有哪些项目需要初始化,加载所有需要初始化的项目的build.gradle 文件,并为每个项目创建 project 对象。(2)配置阶段执行各项目下的 build.gradle 脚本完成 project 的配置,构造 Task 任务依赖关系图以便在执行阶段...原创 2019-05-30 12:12:46 · 1926 阅读 · 0 评论 -
【flutter】flutter原始指针事件PointerEvent处理
(1)在移动端,各个平台或UI系统的原始指针事件模型基本都是一致,即:一次完整的事件分为三个阶段:手指按下、手指移动、和手指抬起,而更高级别的手势(如点击、双击、拖动等)都是基于这些原始事件的。当指针按下时,Flutter会对应用程序执行命中测试(Hit Test),以确定指针与屏幕接触的位置存在哪些widget。注意,只有通过命中测试的Widget才能触发事件。(2)Flutter中可以使用...原创 2019-05-26 10:33:10 · 3257 阅读 · 0 评论 -
【Android】美团robust原理分析
主流的热修复框架类型(1)ClassLoader:将热修复的类放在dexElements[]的最前面,这样加载类时会优先加载到要修复的类以达到修复目的。如腾讯的Tinker、Nuwa等。(2)Native hook:修改java方法在native层的函数指针,指向修复后的方法以达到修复目的。如阿里的Andifix、DexPosed等。(3)Instant run:在编译打包阶段对每个函...原创 2019-03-31 17:20:46 · 1890 阅读 · 0 评论 -
【Android】热修复影响1-Java类型擦除和桥方法
注:Java类型擦除发生在泛型编程中。Type Erasure and Bridge Methods类型擦除和桥方法(1)The compiler sometimes creates a synthetic(合成的) method, called a bridge method, as part of the type erasure process.在类型擦除过程中,编译器通常会生成...原创 2019-03-24 16:31:04 · 214 阅读 · 0 评论 -
【Android】Instant Run原理解析
1、研究主流的热修复框架后,你会发现andfix和dexposed采用jni hook方法,不用重启就能修复,而Nuwa的ClassLoader思路因为类被虚拟机加载后,不会重新加载,所以需要重启。Instant Run是怎么实现不重启加载的呢,难道也是jni hook?2、Instant Run原理一个插件一个库,Instant Run用的是gradle plugin和instant-r...原创 2019-03-30 16:15:00 · 690 阅读 · 0 评论 -
【Android】阿里路由框架ARouter原理分析总结
1、单向依赖的module之间组件化中两个单向依赖的module之间需要互相启动对方的Activity时,因为没有相互引用,startActivity()是实现不了的,必须需要一个协定的通信方式,此时类似ARouter的路由框架就派上用场了。2、互不依赖的module之间两个module之间没有依赖,便不能通过startActivity()的显示启动进行通信,那么如何进行通信呢?(...原创 2019-01-23 16:37:09 · 5837 阅读 · 0 评论 -
【Android】RecyclerView 辅助类 SnapHelper总结
1、SnapHelper说明 SnapHelper是个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。SnapHelper是个抽象类,官方提供了LinearSnapHelper、PagerSnapHelper子类。例如LinearSnapHelper可以让RecyclerView滚动停止时相应的Item停留中间位置。PagerSnapHelper可以使Rec...原创 2019-01-15 18:28:09 · 2116 阅读 · 0 评论 -
【Java】Arrays.asList()使用注意事项
Arrays.asList()的使用注意事项时常忘记,在此再做下总结。使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。说明:Arrays.asList()的返回对象是Arrays的静态内部类ArrayList,而不是java.util.Ar...原创 2019-01-25 10:48:59 · 1184 阅读 · 0 评论 -
【Android】WindowManager.addView和removeView注意事项总结
1、addView窗体泄漏问题:android.view.WindowLeakedandroid.view.WindowLeaked一般会发生在Activity与Dialog的显示。(1)dialog、PopupWindown窗体原因:我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的dialog、Popup...原创 2019-01-14 19:12:10 · 9466 阅读 · 0 评论 -
【Android】ViewPager实现无限循环滑动思想
ViewPager本身并不能实现循环滑动。网上查找到两种方法:1. 将ViewPager设置一个足够大的整数Integer.MAX_VALUE,但这并不是真正的无限循环;2. 在实际展现的ViewPager前后分别插入一个item,真正实现无限循环滑动。1、关于ViewPager.setOffscreenPageLimit方法(1)大家都知道,viewpager是默认预加载下一...原创 2018-10-31 14:31:10 · 1828 阅读 · 0 评论 -
Fragment中onOptionsItemSelected方法不起作用的解决方法
以前一般都是在Activity中添加menu菜单,一般是重写onCreateOptionsMenu和onOptionsItemSelected方法。现在Fragment用的多了,就在Fragment里面添加menu菜单,也是重写了onCreateOptionsMenu和onOptionsItemSelected方法,但是发现没有效果。在源代码中可以发现,这跟一个叫mHasMenu的boolea原创 2014-07-21 10:45:36 · 10056 阅读 · 2 评论 -
SharedPreferences
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data//shared_prefs/目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:1)根据原创 2014-05-23 16:23:04 · 802 阅读 · 0 评论 -
AsyncTask
1、官网解释(1)Class OverviewThis classallows to perform background operations and publish results on the UI threadwithout having to manipulatethreadsand/or handlers.AsyncTask isdesigned to be a hel原创 2014-06-06 18:38:25 · 866 阅读 · 0 评论 -
android生命周期(详细总结)
1、android生命周期图 2、activity三种状态(1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动(Active)。(2)paused:当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertD原创 2014-03-23 16:06:04 · 36485 阅读 · 4 评论 -
android四大组件(详细总结)
android四大组件分别为activity、service、content provider、broadcast receiver。一、android四大组件详解1、activity(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)android应用中每一个Activity都必须要在AndroidManif原创 2014-03-23 16:03:50 · 182645 阅读 · 19 评论 -
Android Handler
Handler是一个用于线程间通信的类。为什么要使用Handler?因为,当我们的主线程队列,如果处理一个消息超过5秒,Android就会抛出一个ANP(无响应)的消息。所以,我们需要把一些要处理比较长的消息,放在一个单独线程里面处理,把处理以后的结果,返回给主线程运行,这时就需要用Handler来进行线程间的通信。handler基本使用:在主线程中,使用handler很简单,new一个H原创 2014-04-16 11:57:59 · 797 阅读 · 0 评论 -
执行adb push时,出现read-only file system问题。
执行adb push时,出现read-only file system问题。解决方法:首先adbremount一下,然后再试一次就行。原创 2014-03-12 16:00:21 · 1451 阅读 · 0 评论 -
android蓝牙传输文件时的文件格式限制及其解决方法
出于安全考虑,android蓝牙在传输文件时对文件格式有限制,默认情况下,并不是所有文件都能够传输和共享。在packages/apps/Bluetooth下面的AndroidManifest.xml中 android:process="@string/process" android:theme="@android:sty原创 2014-03-19 11:44:37 · 6911 阅读 · 0 评论 -
Intent与IntentFilter简要分析
如果用户需要从一个activity切换到另一个Activity,则必须使用Intent来激活。实际上,Activity、Service、Broadcast Receiver这三种核心组件都需要使用Intent来激活。Intent可以分为显式和隐式两种。显式Intent通过组件名称来指定目标组件,显式Intent通常用于应用程序内部消息。隐式Intent不指定组件名称,通常用于激活其他应用程序中原创 2014-04-15 11:34:55 · 1142 阅读 · 0 评论 -
android源码编译出现No private recovery resources for TARGET_DEVICE解决方法
mmm或mm出现以下提示的解决方法:log:No private recovery resources for TARGET_DEVICE xxxxxxmake: Entering directory `/xxxxx/android'make: Nothing to be done for `all_modules'.make: Leaving directory `/xxxx原创 2014-04-30 14:20:25 · 23218 阅读 · 1 评论 -
git总结
1、git解释:git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是linux发明者Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。分布式和集中式的最大区别在于开发者可以本地提交。每个开发者机器上都有一个服务器的数据库。2、git图示: 3、一般开发者眼中的git:(1)从服务器上克隆数据原创 2014-03-08 17:08:18 · 1050 阅读 · 0 评论 -
repo总结
(1)repo解释:repo是在linux环境中开发android主机环境需要的工具包名称,用于进行版本控制。repo是Google用python脚本写的调用Git的脚本,主要用来下载、管理android项目的软件仓库。(2)repo三个特性:(a)基于git构建,管理多个git库。(b)自动化版本管理工作流程。(c)提供一致的分支操作。(3)repo组件:repo脚本原创 2014-03-07 18:17:23 · 3226 阅读 · 1 评论 -
android settings学习笔记(一)
1、android settings的继承关系Settings-->PreferenceActivity-->ListActivity-->Activity-->xxx可以看到Settings是ListActivity的一个后代,可知Setting主界面的项都是放在一个ListView里面的。2、android settings目录结构由于需要修改Setting默认设定的需要,需要原创 2014-03-06 15:11:03 · 1356 阅读 · 0 评论 -
Fragment与Activity交互
Activity直接影响它所包含的Fragment的生命周期,所以对Activity的某个生命周期方法的调用也会产生对Fragment相同方法的调用。例如:当activity的onPause()方法被调用时,它所包含的所有的fragment们的onPause()方法都会被调用。Fragment比Activity还要多出几个生命周期回调方法,这些额外的方法是为了与activity的交互而设立的。原创 2014-05-05 18:30:30 · 2061 阅读 · 0 评论 -
ContentObserver
1、ContentObserver目的如果内容提供者数据发生了变化,监听器立刻就能收到对数据库操作的记录,而监听器是采用通知的机制,如果不采用通知的机制也可以做,那就是不断的查询数据库,这样的话效率就会很低。而采用通知机制的话,当用户向数据库发送一条记录,ContentObserver立刻就能获取到,我们就可以进行处理数据。2、监听ContentProvider数据变化的demo(1)原创 2014-05-06 12:04:21 · 1959 阅读 · 0 评论 -
Android分辨率详解
1、Android手机常见分辨率WVGA:800x480FWVGA:854x480QHD:960x540720P:1280x720(标清,standard definition,SD)1080P:1920x1080(高清,high definition,HD)2、分辨率对应dpidpi(dots per inch,每英寸点数)hdpi对应WVGA、FWVGA、QHD原创 2014-07-16 13:07:38 · 10646 阅读 · 0 评论 -
smartphone sensor(智能手机传感器)
1、proximity sensor(p-sensor)接近传感器。作用例如打电话的时候可以检测手机是否接近耳朵。2、gravity sensor(g-sensor)重力传感器。它能够感知到加速力的变化,加速力就是当物体在加速过程中作用在物体上的力。比如晃动、跌落、上升、下降等各种移动变化都能被g-sensor转化为电信号,然后通过微处理器的计算分析后,就能够完成程序设计好的功原创 2014-05-22 16:20:23 · 2835 阅读 · 0 评论