Android进阶
liuyi1207164339
这个作者很懒,什么都没留下…
展开
-
Android进程和线程
翻译自:https://developer.android.com/guide/components/processes-and-threads.html#Processes一直觉得看任何书都不如看Android官方文档,权威又全面,全是干货!进程和线程当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Lin翻译 2016-06-02 15:56:47 · 1198 阅读 · 0 评论 -
在APP当中调用Android系统摄像头进行视频录制
1、获得摄像头Feature和写文件的权限<uses-feature android:name="android.hardware.camera2" android:required="true" /> 2、创建一个文件用来保存得到的视频 /** * 创建保存录制得到的视频文件 * * @return原创 2016-06-12 22:16:48 · 19295 阅读 · 1 评论 -
在Activity和Service之间使用Binder和回调接口进行通信
Activity和Service之间的通信方式有多种:通过broadcast、扩展Binder类、使用Messenger、使用AIDL等。扩展Binder类使用场景如果你的服务仅供本地应用使用,不需要跨进程工作,则可以实现扩展Binder 类,让你的客户端通过该类直接访问服务中的公共方法。此方法只有在客户端和服务位于同一应用和进程内这一最常见的情况下方才有效。例如,对于需要将原创 2016-06-15 19:36:54 · 8806 阅读 · 1 评论 -
使用Messenger实现IPC通信
参考:https://developer.android.com/guide/components/bound-services.htmlMessenger简介如需让接口跨不同的进程工作,则可使用 Messenger 为服务创建接口。服务可以这种方式定义对应于不同类型 Message 对象的 Handler。此 Handler 是 Messenger 的基础,后者随后可与客户端分享一个 I原创 2016-06-16 13:15:00 · 1688 阅读 · 0 评论 -
Intent 和 Intentfilter
来自:https://developer.android.com/guide/components/intents-filters.htmlIntent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity表示应用中的一个屏幕。通过将Inte翻译 2016-06-23 10:49:30 · 3550 阅读 · 0 评论 -
Intent匹配和解析
来自:https://developer.android.com/guide/components/intents-filters.html当系统收到隐式Intent以启动 Activity 时,它根据以下三个方面将该 Intent 与 Intent 过滤器进行比较,搜索该Intent的最佳Activity:Intent 操作Intent 数据(URI 和数据类型)In翻译 2016-06-23 12:00:37 · 1755 阅读 · 0 评论 -
关于AIDL一些需要注意的地方
1、从远程客户端进程来的调用是由不同的线程发起的,运行在不同的进程。所以,服务端必须处理好在同一时刻有多个从不同线程过来的请求的情况。也就是说,一个AIDL的实现必须是完成线程安全的,必须手动处理多线程的情况。2、AIDL接口当中的oneway关键字代表远程调用的行为。当使用的时候,远程调用不会阻塞,会立即返回。AIDL中支持的类型:1、所有的Java基本数据类型,比如int,原创 2016-06-19 13:53:25 · 7950 阅读 · 0 评论 -
Activity生命周期总结
Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。 一个应用通常由多个彼此松散联系的 Activity 组成。一般会指定应用中的某个 Activity 为“主” Activity,即首次启动应用时呈现给用原创 2016-05-30 19:54:15 · 1515 阅读 · 0 评论 -
Android属性动画(Property Animation)(上)
从Android3.0 (API11)开始引入了属性动画,跟早期的View动画相比,属性动画具有以下优点:1、属性动画允许对任意对象的属性执行动画操作,而早期的视图动画仅仅只能对View执行动画操作。2、View动画只能改变视图的几个方面,比如对视图进行缩放以及旋转等,但是像背景颜色这种就无法改变。3、View动画只是改变View在屏幕上的位置,但是却不能真正改变View本身。比如对于一个按钮,通过动画让其在屏原创 2016-12-12 22:51:31 · 2289 阅读 · 1 评论 -
Android属性动画(PropertyAnimation)(下)
继续之前的属性动画讲解。上一篇http://blog.csdn.net/liuyi1207164339/article/details/53590451对属性动画进行了较为详细的讲解,包括ValueAnimator、ObjectAnimator、AnimateSet以及自定义TypeEvaluator等等,接下来继续讲解属性动画其他的一些知识点。1、布局动画LayoutAnimations属性动画系原创 2017-02-28 00:17:20 · 606 阅读 · 0 评论 -
调用Android系统摄像头进行拍照以及从图库选择图片
很多时候我们需要调用系统摄像头进行拍照,然后得到拍照之后的图片,然后对图片进行一些处理。比如微信设置头像,就可以选择调用设备存在摄像头APP进行拍照,然后对图像进行裁剪,最终设置为头像,把头像传给服务器保存。调用系统摄像头拍照主要分为以下几个部分:1、获得摄像头Feature和写文件的权限由于不需要直接操作摄像头,而只是调用存在的APP,所以不需要Camera权限,自需要获得C原创 2016-06-11 14:10:06 · 9011 阅读 · 2 评论 -
Android数据存储之——SQLite数据库操作
对于一些重复的或者结构化的数据,保存到数据库是一个理想的选择,下面对SQLite数据库的操作进行讲解。首先是定义一个数据结构体:package com.easyliu.sqlite.db;import android.provider.BaseColumns;/** * 一般继承自BaseColumns,从中继承public static final String _ID = "原创 2016-06-05 21:18:51 · 2587 阅读 · 0 评论 -
使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端
前一篇文章讲了怎么在客户端使用AIDL实现IPC通信,调用远程服务端的方法。但是,远程服务端并不能主动给客户端返回信息。在很多情况下是需要远程服务端主动给客户端返回数据,客户端只需要进行监听即可,这是典型的观察者模式。这篇文章主要来解决一下这个问题。代码主要来自ApiDemos/App/Service/Remote Service Binding,下面对代码进行说明。1、首先是AI原创 2016-06-19 01:34:23 · 7887 阅读 · 5 评论 -
使用AIDL实现IPC通信之——简单调用远程服务的方法
为什么使用AIDLAIDL和Messenger都可以实现跨进程通信,Messenger底层也是基于AIDL的。使用AIDL而不使用Messenger的情况是:允许从不同应用的客户端访问你的Service且你的Service需要处理多线程的情况,因为Messenger中的消息默认是串行执行的。还有一点就是:使用Messenger主要是为了传递消息,很多时候需要跨进程调用服务端的方法,这种情况Me原创 2016-06-19 00:00:29 · 2929 阅读 · 0 评论 -
Android代码规范
基本的命名法Java编程比较常见的有下面三种命名方式驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写下划线命名法:单词与单词间用下划线做间隔一般建议拿来做命名的单词要比较精悍短小,这样即使两三个单词一起拼装成一个命名,也不至于显得很冗长。当然有些单词我们也可以直接写成一些约转载 2016-06-16 15:29:00 · 517 阅读 · 0 评论 -
Bound Service简介
来自:https://developer.android.com/guide/components/bound-services.html绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。基础知识绑翻译 2016-06-16 20:44:08 · 1553 阅读 · 0 评论 -
构建一个能够接收别的App数据的APP
我们都知道每个Android手机上都有图库,图库中的图片可以发送给别的APP进行显示,比如发送给微信好友、发送到朋友圈以及发送给电脑等(这个经常使用)。那这是怎么实现的呢,我们能不能自己构建一个APP,当在图库中点击发送的时候能够从可选项中找到我们的APP,然后在APP当中显示图片。这是可以的,而且非常简单。在两个应用之间发送和接收数据最普遍的方式就是使用intent。Inetnt允许原创 2016-06-16 00:55:20 · 3837 阅读 · 1 评论 -
Android Service详解
来自:https://developer.android.com/guide/components/services.htmlService是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放翻译 2016-06-14 13:03:42 · 3302 阅读 · 0 评论 -
管理Android音频播放
如果你的APP播放音频,你必须能够控制音频的播放。为了保证用户体验,你的APP必须要能够获取音频焦点,这样就能保证多个APP不会在同一时刻播放音频。1、确认使用的音频流Android为playing music, alarms, notifications, the incoming call ringer, system sounds, in-call volume, and D翻译 2016-06-09 20:00:13 · 2522 阅读 · 0 评论 -
Android数据存储之——SharedPreferences
SharedPreferences简介 如果你有少量的键值对信息需要存储,应该使用SharedPreferences API,它可以存储以下数据类型的数据:booleans, floats, ints, longs, and strings。一个SharedPreferences对象指向一个包括键值对的文件并且提供简单的方法对这些数据进行读写。每一个SharedPreference原创 2016-06-05 13:02:44 · 850 阅读 · 0 评论 -
Android数据存储之——内部存储
内部存储,在Android中,开发者可以直接使用设备的内部存储器中保存文件,默认情况下,以这种方式保存的和数据是只能被当前程序访问,在其他程序中是无法访问到的,而当用户卸载该程序的时候,这些文件也会随之被删除。数据写入方式 基本上也是先获得一个文件的输出流,然后以write()的方式把待写入的信息写入到这个输出流中,最后关闭流即可,这些都是Java中IO流的操作。具体步骤如下:原创 2016-03-06 12:39:52 · 514 阅读 · 0 评论 -
Android数据存储之——外部存储
在API Level 8之前,所有的文件都是建议放在Environment.getExternalStorageState()目录下的;从API Level 8开始,对于应用程序的私有文件应该放在Context.getExternalFilesDir目录下,非私有的(shared)的文件应该放在目录下Environment.getExternalStoragePublicDirectory原创 2016-03-06 11:24:23 · 729 阅读 · 0 评论 -
Android数据存储之——操作raw和assets目录下的文件
res/raw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。res/raw和assets的不同点:1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。2.res/raw原创 2016-06-05 17:57:08 · 1624 阅读 · 0 评论 -
Gradle基础之Groovy语法
Gradle基础之Groovy语法在使用Android Studio开发app的过程中,都会接触到Gradle配置,而Gradle的配置是基于Grovvy语法的。因此,要想熟练的使用Gradle进行配置,就必须熟悉Groovy语法,下面开始讲解下Groovy的基本语法。Groovy可以看作是java的加强版,扩展了java的语法,拥有自己的一些特性。Groovy语法官方文档1. 注原创 2018-01-07 22:55:33 · 5436 阅读 · 0 评论