May


  • 首页

  • 关于

  • 分类

  • 归档

  • 搜索

Binder机制

发表于 2019-05-11 | 分类于 GuideBook , Android |
Binder机制 首先Binder是Android系统进程间通信(IPC)方式之一。 Binder使用Client-Server通信方式。Binder框架定义了四个角色:Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间。Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信。 Server创建了Binder实体,为其取一个字符形式,可 ...
阅读全文 »

EventBus

发表于 2019-05-11 | 分类于 GuideBook , Android |
EventBus 概述EventBus是一款针对Android优化的发布/订阅(publish/subscribe)事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅。以及将发送者和接收者解耦。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。 EventBus作为一个消息总线,有三个主要的元素: Event:事 ...
阅读全文 »

Android几种进程

发表于 2019-05-11 | 分类于 GuideBook , Android |
Android几种进程 前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的 可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互 服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的,例如用户正在非音乐界面听的音乐或者正在非下载页面自己下载的文件等;当系统要空间运行前两者进程时才会被终止 后台进程:其中运行着执行onStop方法而停止的程序,但是却不是用户当前关心的,例 ...
阅读全文 »

Git 操作

发表于 2019-05-11 | 分类于 GuideBook , Android |
Git 操作git 命令 创建本地仓库 1git init 获取远程仓库 12git clone [url]例:git clone https://github.com/you/yourpro.git 创建远程仓库 12345678910111213141516// 添加一个新的 remote 远程仓库git remote add [remote-name] [url]例:git remote add origin https://github.com/you/yourpro.gitorigin:相当于该远程仓库的别名// 列出所有 remote 的别名git remote// 列出 ...
阅读全文 »

Fragment

发表于 2019-05-11 | 分类于 GuideBook , Android |
Fragment为何产生 同时适配手机和平板、UI和逻辑的共享。 介绍 Fragment也会被加入回退栈中。 Fragment拥有自己的生命周期和接受、处理用户的事件 可以动态的添加、替换和移除某个Fragment 生命周期 必须依存于Activity Fragment依附于Activity的生命状态 生命周期中那么多方法,懵逼了的话我们就一起来看一下每一个生命周期方法的含义吧。 Fragment生命周期方法含义: public void onAttach(Context context) onAttach方法会在Fragment于窗口关联后立刻调用。从该方法开始,就可以通过F ...
阅读全文 »

Handler内存泄漏分析及解决

发表于 2019-05-11 | 分类于 GuideBook , Android |
Handler内存泄漏分析及解决 一、介绍首先,请浏览下面这段handler代码: 12345678public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage(Message msg) { // ... } }} 在使用handler时,这是一段很常见的代码。但是,它却会造成严重的内存泄漏问 ...
阅读全文 »

MVC,MVP,MVVM的区别

发表于 2019-05-11 | 分类于 GuideBook , Android |
MVC,MVP,MVVM的区别 MVC软件可以分为三部分 视图(View):用户界面 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下: View传送指令到Controller Controller完成业务逻辑后,要求Model改变状态 Model将新的数据发送到View,用户得到反馈 Tips:所有的通信都是单向的。 互动模式接受用户指令时,MVC可以分为两种方式。一种是通过View接受指令,传递给Controller。 另一种是直接通过Controller接受指令 MVPMVP模式将Controller改名为Presenter,同时改 ...
阅读全文 »

ListView详解

发表于 2019-05-11 | 分类于 GuideBook , Android |
ListView详解 直接继承自AbsListView,AbsListView继承自AdapterView,AdapterView又继承自ViewGroup。 Adpater在ListView和数据源之间起到了一个桥梁的作用 RecycleBin机制RecycleBin机制是ListView能够实现成百上千条数据都不会OOM最重要的一个原因。RecycleBin是AbsListView的一个内部类。 RecycleBin当中使用mActiveViews这个数组来存储View,调用这个方法后就会根据传入的参数来将ListView中的指定元素存储到mActiveViews中。 mActiveVi ...
阅读全文 »

MVP

发表于 2019-05-11 | 分类于 GuideBook , Android |
MVP 为什么需要MVP 尽量简单 大部分的安卓应用只使用View-Model结构,程序员现在更多的是和复杂的View打交道而不是解决业务逻辑。当你在应用中只使用Model-View时,到最后,你会发现“所有的事物都被连接到一起”。复杂的任务被分成细小的任务,并且很容易解决。越小的东西,bug越少,越容易debug,更好测试。在MVP模式下的View层将会变得简单,所以即便是他请求数据的时候也不需要回调函数。View逻辑变成十分直接。 后台任务 当你编写一个Actviity、Fragment、自定义View的时候,你会把所有的和后台任务相关的方法写在一个静态类或者外部类中。这样,你的Task不 ...
阅读全文 »

为什么要使用SurfaceView来实现动画?

发表于 2019-05-11 | 分类于 GuideBook , Android |
为什么要使用SurfaceView来实现动画?因为View的绘图存在以下缺陷: View缺乏双缓冲机制 当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片 新线程无法直接更新View组件 SurfaceView的绘图机制 一般会与SurfaceView结合使用 调用SurfaceView的getHolder()方法即可获得SurfaceView关联的SurfaceHolder SurfaceHolder提供了如下方法来获取Canvas对象 Canvas lockCanvas():锁定整个SurfaceView对象,获取该Surface上的Canvas Canvas lo ...
阅读全文 »
1…456…12
May

May

Life is fantastic!

120 日志
18 分类
3 标签
GitHub
© 2019 May | Site words total count: 87.1k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站总访问量 次 | 有人看过我的博客啦