
android
文章平均质量分 87
陆业聪
腾讯高级客户端工程师。这里有大前端的经验分享和技术干货。关注公众号“陆业聪”,获取最新技术文章。
展开
-
Android应用启动过程详解
本文探讨了Android应用启动过程及其涉及的系统组件和底层框架。通过理解这些关键步骤和原理,开发者可以优化应用性能和用户体验。原创 2024-04-01 12:51:25 · 3170 阅读 · 0 评论 -
Android 开发中 Gradle 使用详解:构建、配置与优化技巧
本文深入探讨了 Android 开发中 Gradle 的详细用法,包括基本概念、构建脚本配置、自定义构建变体、多模块项目管理、插件使用以及常用命令。通过掌握这些技巧,你将能更好地使用 Gradle 管理和构建你的 Android 项目,提高开发效率和代码质量。原创 2024-03-27 16:09:08 · 4125 阅读 · 0 评论 -
android关于onDraw的总结
原文出处:http://blog.sina.com.cn/s/blog_55afbecd0100vqba.htmlAndroid的view组件显示主要经过mesure, layout和draw这三个过程。在mesure阶段里调用mesure(int widthSpec, int heightSpec)方法,这个方法是final不能被重写,在这个过程里会调用onMesure(int widt转载 2015-05-04 15:34:05 · 2577 阅读 · 0 评论 -
Application.mk中APP_ABI 的含义
我们在编写JNI代码时有一个可选的文件Application.mk ,这个文件你可以不创建,但是有时候是有必要写一个这样的文件的。Application.mk文件用于描述应用程序本身的一些属性信息,如应用程序依赖哪些库,应用程序的根目录,应用程序运行在哪些类型指令集的CPU下,还有一些编译选项,在此文件中定义的东西会应用于整个应用程序包括android.mk也会用到这里面的选项。转载 2015-04-27 17:32:52 · 678 阅读 · 0 评论 -
关于多线程下载大文件和断电续传
参考博客:http://blog.csdn.net/wanglong0537/article/details/6411565 更详细的一篇:http://blog.csdn.net/wwj_748/article/details/20146869要点:通过http get获得文件长度,由客户端计算每条线程应该下载的数量,注意处理文件大小不能被线程数刚好整除的情况原创 2015-04-27 00:36:44 · 888 阅读 · 0 评论 -
安卓中如何避免oom
对大图片的处理参考博客:http://www.2cto.com/kf/201208/148379.html总结几点:1、使用BitmapFactory.Options.inSampleSize适当缩小图片的分辨率(根据屏幕显示图片的大小)2、使用软引用和弱引用3、及时回收图片 Bitmap.recycle();原创 2015-04-26 19:27:42 · 771 阅读 · 0 评论 -
使用AIDL双向通信
之前实现了一个功能,要求能和另一个进程的Service双向通信,除了远程Service中要实现IInterface.Stub(),客户进程(调用远程Service的应用)也要实现一个ICallBack.Stub(),而该ICallBack也是通过AIDL定义。例子如下:IService .aidlinterface IService { void init(IC原创 2015-04-26 17:03:51 · 2622 阅读 · 0 评论 -
如何保持service长期在后台运行
android 一直运行的后台服务是不存在的,而且也不是最佳实践,因为一直运行的后台服务会耗费大量系统资源,影响其他程序的响应从而影响到用户体验。可以考虑使用如下几种方案来达到一直运行的效果。1. 调用startForeground方法,android: Service vs SingleTop Activity moved to background2. 使用AlarmManag原创 2015-03-27 16:52:58 · 10695 阅读 · 0 评论 -
优化ListView中的网络图片加载
1.使用适当的开源库,如Volley或者Universal ImageLoader使用Volley时,可以覆写onScrollStateChanged(Activity或者Fragment中),如果处于AbsListView.OnScrollListener.SCROLL_STATE_FLING的状态,imageLoader.stopProcessingQueue();imageLoade原创 2015-02-10 21:24:07 · 2323 阅读 · 0 评论 -
ListView源代码分析
继承关系1、图中单独画出Scrollview是为了说明该ViewGroup并没有自带回收机制,如果要是Scrollview显示大量view,需要手动做处理。 2、继承体系的分工(1) AdapterViewAn AdapterView is a view whose children aredetermined by an {@link原创 2015-02-08 17:38:20 · 1346 阅读 · 1 评论 -
Android中的设计模式
总结Android框架中出现的设计模式。原创 2015-01-31 11:26:47 · 1488 阅读 · 0 评论 -
Fragment和View的比较
Fragment和View都有助于界面组件的复用,这在大型工程里边是特别重要的,但是二者又有所区别。1、Fragment的复用粒度更大。Fragment有完整的生命周期,从代码设计角度讲可以提高内聚性,不同情况下还可以设计不同的Fragment,比如横屏和竖屏情况下View的显示不一样,那么可以建立2个不同的Fragment去处理,代码上面可以有效的扩展。从形态上讲和Act原创 2015-03-18 12:21:25 · 6838 阅读 · 0 评论 -
Fragment生命周期
官方文档中有详细的文字说明,不过最好还是实践下,熟悉过程。http://developer.android.com/guide/components/fragments.html一、Activity的生命周期图:二、Fragment生命周期图(1)、onAttach()//当一个Fragment对象关联到一个Activity时调用。(2)、onCreate()/原创 2015-03-09 11:01:30 · 917 阅读 · 0 评论 -
Volley库源码分析(下)
网络请求部分分析关于volley的网络请求部分可以看博客:http://www.cnblogs.com/bvin/p/3291611.html网络请求中有几个转换解析请求获取响应结果的地方:1.HttpStack接口的performRequest()方法public HttpResponse performRequest(Request requ原创 2015-03-24 11:18:24 · 1106 阅读 · 1 评论 -
定位NDK中出错的地方
ndk里如果出错了,在eclipse的logcat上只能看到一个信号量,之前通过log去定位出错的位置,效率非常低下。今天发现其实android提供了ndk-stack的工具来打印出错堆栈,可以迅速定位到出错的函数。ndk-stack在ndk工具包中,下载地址:http://developer.android.com/tools/sdk/ndk/index.html#Installing原创 2015-03-23 20:33:09 · 538 阅读 · 0 评论 -
共享库查找过程
在开源系统中,包括所有的Linux系统在内的很多都是基于Glibc的。在这些系统里面,动态链接的ELF可执行文件在启动是同时会启动动态链接骑。在Linux系统中,动态链接器是/lib/ld-linux.so.X(X是版本号),程序所依赖的共享对象全部由动态链接器负责装载和初始化。任何一个动态链接的模块所依赖的模块路径保存在“.dynamic”段里,由DT_NEED类型的项表示。动态链接器对于模块的转载 2015-03-25 16:32:05 · 983 阅读 · 0 评论 -
使用Fragment+ViewPager,仿微信实现多页Tab切换
我们今天实现类似微信的首页的滑动Tab效果: 郭霖有一篇博客http://blog.csdn.net/guolin_blog/article/details/13171191,讲过如果实现,但是他的demo不同通过滑动切换,只能通过点击按钮切换。通过viewpager,我们可以完全实现微信的效果。先看看我的实现效果:pa原创 2015-05-11 20:35:47 · 3392 阅读 · 0 评论 -
android library工程项目之间的相互引用出现的问题
转自:http://eyeandroid.diandian.com/post/2013-04-11/40049090256当project主动引用另外一个android project的时候,出现了一个问题,在当前的project中报了library中的一些错误 :E:\developtools\workspace\Chejt\res\layout\setting_cont转载 2015-05-13 16:33:41 · 1510 阅读 · 0 评论 -
使用Glide迁移图片加载框架遇到的一些问题
背景 因为项目原有的图片加载框架已经不满足新的业务需求,而且改造成本较大,本人经过慎重的技术选型,将原有的图片加载框架整体迁移成Glide。在这个过程中我遇到了不少问题,跟大家分享一下。1.如果ImageView不可见 或者 width为0 或者 height为0,glide是不会加载图像的。 项目中遇到ImageView并没有add到UI上,只是用来加载图像,获取drawing cach...原创 2017-11-15 00:22:23 · 1776 阅读 · 2 评论 -
Glide学习笔记
Glide的一些学习笔记原创 2017-11-14 23:16:44 · 415 阅读 · 0 评论 -
Android下的Touch事件分发
Android下的Touch事件分发原创 2017-10-18 22:35:15 · 466 阅读 · 0 评论 -
Android 性能典范-线程
作为Android开发者,线程是最重要又是最容易让人迷惑的东西。如果你要写出流畅的app,你必须理解多线程编程。要知道有相当一部分的Android函数都只能在主线程中执行——系统事件,输入事件,application回调服务,alarm等等。大部分情况下,你在这些操作中所写的代码,也是在主线程执行。原创 2017-08-06 17:03:03 · 466 阅读 · 0 评论 -
Android平台Native代码的崩溃捕获机制及实现
在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。本文将详细阐述Android平台上Native代码的崩溃捕获机制原理,以及如何实现Native崩溃捕获组件。原创 2017-01-07 21:19:41 · 20122 阅读 · 37 评论 -
安卓中处理http超时
http超时限制可以用一下两句: HttpConnectionParams.setConnectionTimeout(post.getParams(), CONNECTION_TIOMOUT); HttpConnectionParams.setSoTimeout(post.getParams(), CONNECTION_TIOMOUT);但是这只能限定连接超时和soket超时,对于dns查找原创 2015-09-15 21:33:32 · 1328 阅读 · 0 评论 -
Android通过tcpdump抓包
1. 手机要有root权限2. 下载tcpdump http://www.strazzere.com/android/tcpdump3. adb push c:\wherever_you_put\tcpdump /data/local/tcpdump4. adb shell chmod 6755 /data/local/tcpdump5, adb shell,转载 2015-09-25 10:10:01 · 1613 阅读 · 0 评论 -
从Monkey源码里学习几个adb shell命令和monekey日志的查阅方法
昨天看了Monkey的代码,里边有几个adb shell的命令,记录一下。 1、procrank2、cat /data/anr/traces.txt抓取anr日志 3、dumpsys meminfo查看内存详情原创 2015-07-31 09:29:42 · 2945 阅读 · 0 评论 -
Handler vs Timer : fixed-period execution and fixed-rate execution android development
From:http://androidtrainningcenter.blogspot.com/2013/12/handler-vs-timer-fixed-period-execution.htmlIn Android Timer and Handler are both can be used for repetitive call. We can do same piece of转载 2015-07-31 15:45:24 · 794 阅读 · 0 评论 -
SQLiteCursor和ContentProvider的线程安全问题
1、SQLiteCursor is not internally sychronize so code using a SQLiteCursor from multiple threads should perfor its own synchronization when using the SQLiteCursor.2、http://developer.android.com/guide/原创 2015-08-12 14:32:29 · 1516 阅读 · 0 评论 -
Activity学习
AtivityThread可以看到该类有一个main方法,其实它是android一个应用程序的入口,每启动一个应用进程,都会创建ActivityThread与之对应的实例,是应用程序的UI线程,Android进程启动时会建立消息循环。负责管理应用程序的生命周期,执行系统广播及其ActivityManagerService请求执行的操作。属于客户端对象。Application转载 2015-07-02 21:19:16 · 484 阅读 · 0 评论 -
Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
转载:http://blog.csdn.net/zhaokaiqiang1992/article/details/43731967本篇文章主要纪录我在学习过程中,发现的非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下面排名不分转载 2015-05-31 15:57:21 · 718 阅读 · 0 评论 -
android5.0的Material Design
关于android5.0有很多新的设计和控件需要我们重新学习,RecyclerView、ToolBar等等,我在这里总结一下,后面会持续更新。一、Button最基础的控件,也有些开源项目帮助我们实现。开源项目:https://github.com/makovkastar/FloatingActionButtonhttps://github.com/futuresim原创 2015-05-15 16:58:58 · 519 阅读 · 0 评论 -
“Material Design”的九大设计原则
谷歌发布新操作系统“ L Developer Preview”后,也同步推出了可视化语言Material Design,它的设计美学将会融入到谷歌所有的平台之中,包括Chrome OS和网页,它也将形成一个统一的外观,将所有的产品捆绑在一起。扁平化的设计,加上明亮的色彩,Material Design的外观还是很吸引人的。此外,谷歌对动画效果也做了相应的调整,让体验变得更加好玩儿。转载 2015-05-14 23:37:19 · 1402 阅读 · 0 评论 -
安卓中如何把普通文件打包进apk并且JNI中能自己读取文件内容
最近遇到这样的需求,安卓的JNI中需要读某些二进制文件,文件名通过java层传给JNI。之前是把这些文件放在sd卡下,但是最后要给别人安装肯定是要把这些文件都打包再apk中才行。开始尝试把它们放在accest目录,但是这个目录的文件没有一个再c++中能读到的文件名。解决办法:1、libs目录里的共享库是会烤到/data/data//lib/下的,于是我们可以把需要再c++中读取的文原创 2015-03-26 22:59:36 · 2945 阅读 · 0 评论 -
深入了解android平台的jni---注册native函数
注册native函数有两种方法:静态注册和动态注册。1、静态注册方法根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联联系,以后在调用时会直接使用这个函数,这部分的操作由虚拟机完成。静态方法就是根据函数名来遍历java和jni函数之间的关联,而且要求jni层函数的名字必须遵循特定的格式,其缺点在于:1)转载 2015-03-09 18:52:18 · 542 阅读 · 0 评论 -
NDK开发中遇到的字节对齐问题
最近花了几天调出来NDK开发中的一个Bug,先看log日志:03-24 15:37:04.373: A/libc(21474): Fatal signal 7 (SIGBUS) at 0x52d26f1a (code=1), thread 21474 (ample.speechapi)在c++中用一个float指针指向地址0x52d26f1a,一读取就有SIGBUS异常。在电脑上的x8原创 2015-03-25 11:33:14 · 1904 阅读 · 0 评论 -
android中listview的性能优化
先看一段示例代码:转载 2014-07-20 23:57:48 · 684 阅读 · 0 评论 -
Android进程间通信--消息机制及IPC机制实现
一、概念及说明Android为了屏蔽进程的概念,利用不同的组件[Activity、Service]来表示进程之间的通信!组件间通信的核心机制是Intent,通过Intent可以开启一个Activity或Service,不论这个Activity或Service是属于当前应用还是其它应用的!转载 2014-08-03 17:28:23 · 487 阅读 · 0 评论 -
BaseAdapter的getView中经常出现position=0的情况
ListView的布局会影响getView的调用,原创 2014-09-04 12:18:14 · 3398 阅读 · 0 评论 -
ANDROID ONTOUCHEVENT, ONCLICK及ONLONGCLICK的调用机制
针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件?在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一次UI操作称之为消费了该事件(consume),那么Android是按什么次序将事件传递的呢?又在什么情况下判定为消费了该事件? 搞清楚这些问题对转载 2014-07-11 11:12:34 · 445 阅读 · 0 评论 -
Android系统中长按事件的实现机制解析
在Android的触摸消息中,已经实现了三种监测,它们分别是1)pre-pressed:对应的语义是用户轻触(tap)了屏幕2)pressed:对应的语义是用户点击(press)了屏幕3)long pressed:对应的语义是用户长按(long press)了屏幕下图是触摸消息随时间变化的时间轴示意图:其中,t0和t1定义在ViewConfiguration类中转载 2014-09-04 20:57:21 · 766 阅读 · 0 评论