- 博客(133)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 输出数组中所有三个数相加为0的解
思路:数组先排序这时候{ -4, -1, -1, 0, 1, 2 }看一下规则,取左等于0,右等于数组大小-4 -1 2 计算和就是-3,这时候要想和为0,左开始向右移动一格-1 -1 2这时候刚好是0,但是并没有结束,结束的条件这里取左和右间隔于是左右各前进一步,左-1 0 1 结束,因为到了左右间隔
2017-09-09 17:48:00
1496
原创 setContentVIew学习
1.setContentView(int id) 2.Window是一个抽象出来区域的概念,意思是这个区域可以添加很多view 那么抽象类的实现是谁,这里是PhoneWindow 3初始化Activity有一个attach方法 mWindow = new PhoneWindow(this, window, activityConfigCallback); 4原来就是PhoneWindo
2017-08-30 21:42:05
350
原创 Activity怎么创建
直接继承Activity就好了。 我这里找了源码看看怎么创建的 scheduleLaunchActivity sendMessage(H.LAUNCH_ACTIVITY, r); handleLaunchActivity(r, null, “LAUNCH_ACTIVITY”); Activity a = performLaunchActivity(r, customIntent);
2017-08-28 21:23:57
609
原创 ActivityThread启动源码解析
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ActivityThread.java 1.启动,走attach ActivityThread thread = new ActivityThread(); thread.attach(false); 2
2017-08-28 20:58:00
549
原创 ApplicationThread 代理启动
ApplicationThread ActivityThread 这2个类经常出现在AMS框架里面,但是他们都不是线程 ActivityThread 是主线程的逻辑类,但是本身不是线程。 查看源码。有一个main函数。启动主线程轮询。这样也就是同一个线程,也就是充当主线程的作用了。ApplicationThread充当的作用是Binder机制,他继承的类就可以看出来。是ActivityThr
2017-08-26 17:04:33
1182
原创 aidl原理解析
写一个aidlaidl就会想到Binder机制,想到CS通信。 定义接口 ITest{int saySomething(String content);}aidl原理 对于客户端,本身持有服务的代理,不会真正去实现,也就是客户端如果说话,不会自己做,而是持有的代理去做这件事class Proxy implements ITest{ Binder mRemote; public Proxy
2017-08-26 16:34:36
369
原创 欢迎使用优快云-markdown编辑器
首先是对AMS持有的对象代理C:客户端App所在进程 S: AMS服务所在进程IActivityManager 接口public abstract class ActivityManagerNative {static public IActivityManager asInterface(IBinder obj) { return IActivityManager.Stub.asInte
2017-08-26 16:17:46
242
原创 欢迎使用优快云-markdown编辑器
如果之前没有接触,可以尝试一下,对于安卓打包啊,插件配置啊还是挺重要的。 现在网上很多开源的组件啊很多都需要配置各种参数。这里指的是安卓啊。 比如安卓热修复,插件,还有组件都需要gradle配置,而gradle基于groovy 是一种DSL语言。所以掌握这个还是比较重要,虽然你工作很少用吧。一开始我也不是很熟悉,不过这里零基础,所以总是写一个helloworld吧 新建一个安卓项目,找到gr
2017-07-29 11:28:16
254
原创 Integer中127和128
int m=127; Integer i=m; Integer i2=m; System.out.println(i==i2); m=128; i=m; i2=m; System.out.println(i.equals(i2)); m=127; i=new Integer(127); i2=new Integer(1
2017-07-02 20:09:21
761
原创 欢迎使用优快云-markdown编辑器
静态方法能不能重写重写的理解静态方法重写非静态方法重写非静态方法依赖类的访问。既然依赖类就得new一个实例,也就是成员方法。这种依赖实例的具体对象是父类对象还是子类对象,如果是子类对象则 调用方法就是子类重写的方法public class A {public static void main(String args[]){ A a=new AA(); System.out.println(a
2017-07-02 19:38:34
227
原创 HashMap之快速失败避免读写同时进行
HashMap是线程不安全的。那么面对读写同时进行会怎么样呢,JDK面对明显的脏数据如何避免,走进科学为你揭晓传说中的快速失败机制是什么样子
2017-04-09 20:23:09
3871
原创 快速失败原理
一般面试都有一些线程题目,大致是某某集合和某某集合什么区别,比如Hashmap .HashTable,ConcurrentHashMap有什么区别很多网上答案都说线程安全,一个线程不安全。那么这里不是讨论什么叫线程安全,只是讨论线程不安全怎么办。以HashMap为例,它不安全,什么叫不安全。简单理解就是多线程读写可能是脏数据,比如你在A线程读,B线程写了一个新数据,而A线程却不知道。可
2017-04-09 18:33:48
1704
原创 java.util.ConcurrentModificationException
需求: 在一组列表中,如果符合条件,将标志为true,否则为falsepublic static void main(String args[]) { HashMap map = new HashMap(); map.put("0", "1"); map.put("1", "x"); map.put("2", "x"); Iterator i = map.keyS
2017-04-09 17:20:06
239
原创 常见byte[]->DexFile整理一下
http://blog.youkuaiyun.com/sbsujjbcy/article/details/53381663http://blog.youkuaiyun.com/sbsujjbcy/article/details/533816635.0以下 libdvm.sohttp://bbs.pediy.com/thread-197274.htmdexFileParse5
2017-03-19 16:02:20
424
原创 一点一点学类加载器--BaseClassLoader加载器基于6.0代码
首先上目录:E:\android-6.0.0_r1\art\runtime\native\dalvik_system_DexFile.ccE:\android-6.0.0_r1\libcore\dalvik\src\main\java\dalvik\system\DexClassLoader.javaE:\android-6.0.0_r1\libcore\dalvik\src\
2017-03-18 20:42:20
625
原创 地址
http://blog.youkuaiyun.com/jiangwei0910410003/article/details/48104455http://blog.youkuaiyun.com/zzx410527/article/details/51673908https://testerhome.com/topics/4480http://www.jianshu.com/p/
2017-03-07 23:23:57
354
原创 K线别人的家的总结
http://m.blog.youkuaiyun.com/article/details?id=53126565https://yq.aliyun.com/articles/63739http://www.cnblogs.com/wytings/p/5097460.htmlhttp://www.jianshu.com/p/0ae907caae6chttp://m.blog.csdn
2017-02-11 17:15:48
472
原创 K线绘制准备
http://data.gtimg.cn/flashdata/hushen/daily/16/sz300033.jshttp://tieba.baidu.com/p/4910671421http://m.blog.youkuaiyun.com/article/details?id=53126565package com.example.myapplicationznview;imp
2017-02-11 17:03:31
768
原创 K线投射到安卓屏幕计算方法
K线的坐标 安卓的坐标那么给定一个真实的价格对应安卓屏幕的坐标Y求 法假设max 最大值 min 最小值 topMargin 上面留白 bottomMargin 下面留白int getY(int input){int realDrawHeight=getHeight()-topMargin-bottomMargin;return
2017-02-11 15:57:00
355
原创 hook+android动态代理
动态代理可以理解为动态替换,干一件事 多种方法先抽象干的事情再具体方法原来的,也可以是 新的,可以 新的替换 旧的
2016-12-29 21:18:30
350
原创 加载第三方apk的资源文件,
Class class_AssetManager = Class.forName("android.content.res.AssetManager"); Object assetMag = class_AssetManager.newInstance(); Method method_addAssetPath = class_AssetManager
2016-12-29 19:33:45
344
原创 安卓插件化几个模块学习
AndroidDynamicLoaderAltas技术OpenAltasDroidPluginHotFix如果单纯的学习而不是项目应用,主要是如下几个模块,1.加载资源文件2加载类代码3.加载Activity4加载so文件
2016-12-28 20:16:40
266
原创 ctrl键看android studio java源码
AndroidStudio中源代码查看linux是在 /home/name/ 都在用户目录配置即可在Android开发中,我们有时渴望知道一些系统API的详细信息,以便更好的理解其实现原理、使用方法、注意事项等等,这时就用到今天说的这些小技巧了。 本人使用的IDE环境是Android Studio,版本2.1.2,相信其他版本与此配置一样。 以Context为例,按着Ctr
2016-12-15 14:03:03
2076
原创 多线程数据改变导致可见性问题整理
这里也是一个比较好玩的话题:梳理:当一个线程访问数据,是串行的,也就是第一次改变数据,第二次访问肯定是拿到改变后的数据。而多线程就没有这么好的命运了。当A改变数据,B去拿的时候可能数据源根本没有变化,错误以为没有改变。JAVA并发编程实战举了一个例子。当A尝试改变一个数据,同时改变状态为已经改变的状态。B检查状态改变做相应的处理。当简单的多线程甚至是加锁处理发现效果
2016-12-04 20:47:52
438
原创 合理加锁保持线程代码安全且保证性能
线程安全保证最好的办法是加锁,然而对于盲目的加锁直接导致安全访问数据,但是代价确实经常的加减锁。让性能变得差劲。所以这里需要权衡加锁的范围,也就是安全与性能的较量。public class Down extends Thread{ static DownloadEntity downloadEntity=new DownloadEntity(); public st
2016-12-04 20:05:50
788
原创 重学多线程开发,学习并发思路
在安卓开发,多线程并不多,更多时候在于三种线程,UI线程,数据库写线程,网络线程。三种线程也很少并发同时工作。所以读写保护之类也不是特别重要和显眼。可能更多的是耗时线程与UI线程使用Handler通信机制。然而由于现在需要维护一份安卓多线程下载代码模块,下载是常见的多线程并发读写加断点续传,里面是写的一个下载模块,各种网络原因和弱网环境加特殊通道等等。让这份代码现有能力无法弄明白,所以
2016-12-04 19:50:35
273
原创 收藏夹
https://github.com/Gracker/Rss-IThttps://www.douban.com/note/568217703/
2016-11-27 18:39:13
239
原创 framework奔溃思考
安卓bug尤其是crash,一旦测出来肯定得改。这种遗留bug让人痛苦不堪,下面就framework框架bug导致思考一下人生。改bug很多时候想复现,但是框架层bug一般都是这样的java.lang.NullPointerException: java.lang.NullPointerException at android.view.ViewGroup.dispat
2016-10-23 14:16:31
347
原创 安卓neic泄漏-工具使用介绍
拿到内存文件看看,手动http://www.2cto.com/kf/201512/455421.htmlandroid studio自动检测 http://blog.youkuaiyun.com/u010944680/article/details/51721532leakcanacy 自动app检测http://www.liaohuqiu.net/cn/posts/l
2016-10-13 01:34:38
320
原创 安卓内存泄漏(三) 泄漏场景
模糊感觉,感觉什么Handler。Context内存泄漏一开始各种handler,后来感觉都不敢用,感觉都是内存泄漏梳理1 Handler内部类导致内存泄漏handler里面控制消息,消息在队列里面,如果设置10s才去处理。则消息一直在队列里面。那这个10s时间handler无法销毁。内部类持有外部类引用。内部类所以注意吧。外部类如果Activity,是
2016-10-13 01:28:12
278
原创 内存泄漏学习(二)工具介绍
工具都是固定的,android studio+MAT。android studio这里当然是开发工具,因为eclipse用的比较少。它作用是拿到内存 文件虽然可以用于解析工具,但是详细分析最好是MAT另外它直接dump的文件无法解析,需要去Capture右键生成标准文件。作为解析工具还是简要说说。1怎么看内存泄漏,点击一个按钮,观察Memory发现变大,点击一下
2016-10-13 01:10:25
216
原创 安卓内存泄漏学习(-)--内存泄漏介绍与回收算法简介
内存泄漏不是安卓独有的,不过这里以安卓为例子,打算学习一下安卓里面的内存泄漏,算是性能调优的学习吧。什么是内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 通俗易懂的讲就是开发人员,用new这个关键词可以产生大量对象,这些对象无法销毁。
2016-10-13 00:50:12
279
原创 JPEG JPG
简述 JPEG是一个压缩标准,又可分为标准JPEG、渐进式JPEG及JPEG2000三种: ①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的。此类型图片在网页下载时只能由上而下依序显示图片,直到图片资料全部下载完毕,才能看到全貌。 ②渐进式JPEG:渐进式JPG为标准JPG的改良格式,支持交错,可以在网页下载时,先
2016-09-20 21:59:42
821
原创 图像概念
图像领域的术语还真是多,不仔细学习学习还真搞不清楚。先一个个介绍下吧: 1、RGB 这个大部分都知道,“人类眼睛的色觉,具有特殊的特性,早在上世纪初,Young(1809)和Helmholtz(1824)就提出了视觉的三原色学说,即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时
2016-09-20 21:58:38
379
原创 H264->YUV
int p; unsigned char *DisplayBuf; DisplayBuf = (unsigned char *)malloc(sizeof(unsigned char)*(3 * 1280 * 720)); consumed_bytes= avcodec_decode_video(c, picture, &got_pi
2016-09-20 21:55:47
443
原创 播放PCM
众所周知,Android 的 MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用 MediaPlayer实现的。MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个 MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的B
2016-09-20 21:53:31
2004
原创 h.264 FROM avi
为了提高H264的保存效率,抛弃了FFmpeg库的avi封装,直接才源码的方式封装avi文件,源码来源于网络,经改造回馈网络。废话不多说,直接上干货。[cpp] view plain copy print?/* * avi_writer.h */ #ifndef AVI_UIILS_WRITER_H_ #def
2016-09-20 21:51:15
340
原创 AVI
AVI(Audio Video Interleaved的缩写)是一种RIFF(Resource Interchange File Format的缩写)文件格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基本的、
2016-09-20 21:49:59
288
原创 avi
最近在做视频文件的解析,需要将视频文件中封装的视频与音频解析出来,然后用自己的解码器解码。这个过程专业点叫做叫做Demultiplex,视频播放器中负责这部分的叫做Demuxer。我们平时看到的各种格式视频,比如:avi,mp4,mkv等相当于一种容器,里面包含了音视频,字幕的信息以及数据,Demuxer的工作就是解析视频文件,取出里面的音视频或者字幕送到指定的解码器解码。我刚开始接触的a
2016-09-20 21:49:09
3563
android普通按钮点击触发PendingIntent
2015-10-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人