android
邹啊涛
渺渺苍穹一学渣,芸芸众生路人甲
展开
-
Android 中你所需要了解掌握的--四大组件之BroadcastReceiver详解
Android 中你所需要了解掌握的–四大组件之BroadcastReceiver详解。在文章中,我对BroadcastReceiver概念进行了介绍,对BroadcastReceiver的使用给了代码来进行更好的理解。二十分钟看懂BroadcastReceiver的前世今生。原创 2017-04-10 13:53:47 · 471 阅读 · 0 评论 -
Android IPC之 Messenger
Android中的跨进程通信可以是一个App中的两个进程,也可以是两个App之间进行通信。Messenger是一种轻量的IPC通信机制。Messenger的使用步骤1,在Service中需要实现一个Handler,用来处理从客户端接收到的消息。比如说下面:private class ServiceHandler extends Handler { @Override原创 2017-08-30 00:43:42 · 262 阅读 · 0 评论 -
使用WindowManager实现悬浮窗
Window表示一个窗体的概念。所有的界面中的View其实都是依附在Window上。 我们可以通过WindowManager来对Window上的View进行管理。常见的方法有:windowManager.addView(View,WindowManager.LayoutParam);windowManager.removeView();windowManager.getDefaultDispl原创 2017-08-31 23:48:03 · 2489 阅读 · 0 评论 -
Android适配不同版本、屏幕
不同版本SDK1,指定minSDKVersion与targetSDKVersion 2,运行时获取版本号 3,使用系统内置的主题,会随着版本的更换而自动适配不同屏幕1,使用wrap_content、match_parent、weight 2,使用相对布局,禁用绝对布局 3,使用自动拉伸位图 .9格式(nine-patch图片) 4,使用dp来设置控件间距,使用sp来设置文字大小 5,提原创 2017-09-19 12:59:34 · 486 阅读 · 0 评论 -
XUtils BitmapUtils 源码分析
在我们使用BitmapUtils来进行图片的加载时,是直接调用display方法来进行图片的加载。有好几个display方法,参数个数不一样,但是其实最后调用的都是如下方法public <T extends View> void display(T container, String uri, BitmapDisplayConfig displayConfig, BitmapLoadCallBack原创 2017-09-03 15:20:45 · 316 阅读 · 0 评论 -
Volley框架原理准备
1,在我们使用Volley框架进行网络请求发送时,首先会调用 Volley.newRequestQueue来生成一个请求队列,我们调用的newRequestQueue是一个重载函数。2,newRequestQueue返回的是一个请求队列的对象RequestQueue,而且返回的RequestQueue是已经启动了的,即已经调用了start方法。3,那么这个启动了的请求队列是如何进行请求的获...原创 2018-08-17 20:22:07 · 497 阅读 · 1 评论 -
Android中子线程更新UI的方法
第一类,使用Handler在主线程中实例化一个Handler,子线程中耗时操作完成之后,通过sendMessage方法发送Message,在主线程Handler中进行处理并更新UI使用AsyncTask,AsyncTask也是封装了Handler,所以必须声明在主线程中。第二类,通过实例化一个Runnable,放在主线程中运行调用Activity的runOnUIThread方法...翻译 2018-08-24 21:02:49 · 271 阅读 · 0 评论 -
从github上面down React-native项目时,跑不起来,
在开发者上传他们的react-native项目时,为了减小项目文件夹的大小,都会选择将node-modules文件夹删掉。所以在我们clone项目下来之后要使用终端,首先进入项目文件夹,接下来使用如下命令将node-modules文件夹添加入项目中。npm -install当然,因为我是刚拿到mac,所以node跟npm都是没有安装的,需要先安装npm。再之后便是可以直接使用Androi...原创 2018-09-27 14:28:09 · 1215 阅读 · 0 评论 -
OKHttp3部分源码阅读
当我们想要将OKHttp3集成进我们的项目中时,我们便会需要使用 OkHttpClient.Builder()方法去创建一个OkHttpClient实例,而在OkHttpClient中就包含了如下属性: final Dispatcher dispatcher; final Proxy proxy; final List<Protocol> protocols; fina...原创 2018-09-27 20:51:56 · 171 阅读 · 0 评论 -
Android完全退出App,关闭所有的Activity
这里我们给出一种使用BroadcastReceiver来实现的方法。首先我们写一个基类CommonActivity继承自Activity,然后在CommonActivity中加入一个BroadcastReceiver,用来接收退出App的广播。简单实现如下:public class CommonActivity extends Activity{ protected BroadCastRe...原创 2018-10-09 12:19:41 · 2335 阅读 · 0 评论 -
Android Studio禁用 install run
最近在尝试在项目中接入腾讯的热修复方案-Tinker在github上面把给出的官方sample clone下来之后想运行在虚拟机上,报错了,如下:Tinker does not support instant run mode, please trigger build by assembleDebug or disable instant run in 'File->Settings....原创 2018-10-10 11:58:18 · 2465 阅读 · 0 评论 -
Android - 一种新奇的冷启动速度优化思路(Fragment极度懒加载 + Layout子线程预加载)
这里写自定义目录标题一、背景二、特意声明三、最常见的优化方案四、项目结构五、极致的懒加载5.1 极致的懒加载5.2 懒加载方案5.3 FragmentPagerAdapter与FragmentStatePagerAdapter5.4 FragmentPagerAdapter的刷新问题5.5 FragmentPagerAdapter刷新的正确姿势六、神奇的的预加载(预加载View,而不是data)6...原创 2019-08-28 20:15:11 · 3023 阅读 · 0 评论 -
Android 子线程跟新UI的方式
只有主线程(UI)线程才能跟新UI界面,那么如果子线程想要更新UI怎么办呢?只能借助于Handler来实现了。(1):最常见的方式就是通过Handler的sendMessage和handleMessage来进行处理了,这个比较简单,不再举例; (2):通过Handler的post方法,这种执行方式需要在post方法中传入执行耗时任务的线程,接着在执行post方法的时候,会将该执行任务的 线程封装到原创 2017-09-06 12:10:31 · 267 阅读 · 0 评论 -
Android的安全机制
1,进程沙箱隔离机制Android应用程序在安装时,被赋予了独特的用户标识 UID,并永久保持; 应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序隔离。 2,应用程序签名机制应用程序包(.apk)文件必须被开发者数字签名,同一个开发者可以指定不同的应用程序共享UID,进而运行于同一个进程空间,共享资源。 签名的作用: 1,识别代码的作者 2,监原创 2017-09-05 16:54:06 · 328 阅读 · 0 评论 -
Android四种应用权限级别
normal:指所有的APP不能访问和共享此APPdangerous:所有的APP都可以访问和共享此APP,所以是危险的。signature :是指具有相同签名的App可以访问和共享此App。signatureOrSystem :是指系统image中App和具有相同签名的App可以访问和共享此App。原创 2017-09-05 16:40:46 · 3527 阅读 · 0 评论 -
Android 中你所需要了解掌握的--四大组件之ContentProvider详解
一、什么是ContentProviderContentProvider应用场景:为了应用程序之间交换数据,Android提供了ContentProvider,当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可以通过提供ContentProvider来实现。比如现在有一个短信接收应用,用户想把接收到的陌生短信的发信人添加到联系人管理应用中,就需要在不同应用之间去共享数据,这时,也可原创 2017-04-10 16:32:02 · 255 阅读 · 0 评论 -
关于Service,有一篇文章讲的不错
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态。http:转载 2017-04-10 19:35:37 · 278 阅读 · 0 评论 -
Android中Activity、View、Window的关系
在准备面试,准备到了时间的分发机制,由于事件分发是Activity->Window->View的隧道式传递,因此先来了解一下他们的关系。Activity是什么? 四大组件之一,它是用户界面的载体,用来加载用户所看到的界面,是存放View的容器,在Activity创建时,在onCreate()方法中有一个setContentView()方法用来将我们定义的xml布局文件设置到界面上。Window是什原创 2017-08-18 16:11:43 · 310 阅读 · 0 评论 -
Android解决滑动冲突的方式
一般滑动冲突有三种情况: 1,外部View的滑动方向和内部View的滑动方向一致 2,外部View的滑动方向和内部View的滑动方向不一致 3,两种情况结合一般我们解决滑动冲突时利用事件的分发机制进行处理。有两种方式: 外部拦截法 内部拦截法外部拦截法外部拦截是通过父容器对事件进行拦截处理,如果父容器不需要该事件,则不进行拦截,将该事件传递给子View。如果父容器决定拦原创 2017-08-18 19:47:17 · 333 阅读 · 0 评论 -
AsynTask
介绍: AsyncTask是一种轻量级的异步任务类,可以在后台线程池中执行后台的任务,然后把执行的进度和最终的结果传递给主线程并在主线程中更新UI。从实现上来说,AsyncTask封装了Thread和Handler。但它并不适合特别耗时的任务,对于特别耗时的任务应该使用线程池。 它是一个泛型抽象类,Params表示参数的类型,Progress表示后台任务进度的类型,而Result表示结果的返回类原创 2017-08-19 15:15:28 · 254 阅读 · 0 评论 -
Android布局的优化-include、merge、ViewStub
1,布局重用 include 布局中的重复部分,可以单独的写在一个布局文件中,再使用include进行使用。2,减少视图层级 merge merge标签在UI的结构优化中非常重要,可以删减多余的层级。用来替代FrameLayout或者当一个布局包含另一个时,使用merge标签,因为当使用include标签添加布局文件时,如果include的布局文件是以merge作为根标签,则会忽略merge节点原创 2017-08-19 16:45:58 · 211 阅读 · 0 评论 -
Android三种动画的原理
Android的三种动画: 补间动画、View 动画 帧动画、Drawable 动画 属性动画 android动画可以分为View动画、帧动画、属性动画,其中View动画又可以分为平移(Translate)、缩放(Scale)、旋转 (Rotate)、透明度(Alpha)四种,帧动画可以认为是View动画的一种,实现原理类似于放电影,通过一帧一帧的图片进行播放来达到动画的效 果,正原创 2017-08-18 20:24:36 · 373 阅读 · 0 评论 -
Android如何完全退出app
finish(): 结束当前Activity,不会立即释放内存,遵循android内存管理机制exit():结束当前组件,如Activity,并立即释放当前Activity所占的资源KillProcess() : 结束当前组件,如Activity,并立即释放当前Activity所占的资源restartPackage(): 结束整个APP,包括Service等其他组件。特别注意:除了finish()方原创 2017-08-19 18:55:14 · 802 阅读 · 0 评论 -
Android5.0,6.0,7.0新特性整理
http://blog.csdn.net/haovip123/article/details/54618642 这篇博客写得很不错转载 2017-08-19 19:51:26 · 271 阅读 · 0 评论 -
ListView + CheckBox(或者是RadioGroup等控件)的混乱选中原理
1,常用的写法,只展示Adapter,问题原因就在Adapter中 class Adapter1 extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Objec原创 2017-08-23 01:01:36 · 241 阅读 · 0 评论 -
异步任务 AsynTask 创建之后可以通过 execute()方法执行多次么?
不能,只能执行一次。为什么?public final AsyncTask<Params, Progress, Result> execute(Params... params) { return executeOnExecutor(sDefaultExecutor, params); } 当我们调用execute()来执行任务时,其实是调用如下方法。public final Asy原创 2017-09-04 22:30:10 · 1312 阅读 · 0 评论 -
Android - 彻底消灭OOM的实战经验分享(千分之1.5 -> 万分之0.2)
转自我的掘金 邹啊涛涛涛的掘金我的简书 邹啊涛涛涛的简书前言这是我在掘金的第一篇博客分享,最近在掘金上看了许多大佬的文章,学到了非常多的东西,实在是忍不住想要把我们平时工作中用到的一些优化方案分享出来,其实也是一个大家一起讨论学习的过程,希望大家可以多多交流 ~自我介绍第一篇博客,总得介绍下自己~,有校友或者其他间接挨得着边的联系的可以私聊交流,前1/4 -> 1/3人生实在没啥交...原创 2019-08-28 20:21:46 · 476 阅读 · 2 评论