自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

EasyLiu

成功的路上并没有捷径可走,唯有一步一个脚印

  • 博客(23)
  • 收藏
  • 关注

原创 APP启动引导界面的编写

1、我们都知道当第一次打开一个APP的时候首先是在欢迎界面停留一段时间,然后进入引导界面。引导界面里面的页面可以左右滑动,当滑动到最后一个页面的时候一般在页面当中有一个按钮,点击按钮就可以进入主界面了。2、然后以后每次打开APP,不会进入引导界面,只会在欢迎界面停留一定时间然后进入主界面。今天就来讲一下整个实现过程。欢迎界面WelcomeActivity既然我们需要根据是不

2016-06-25 23:01:47 4817 2

翻译 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 1751

翻译 Intent 和 Intentfilter

来自:https://developer.android.com/guide/components/intents-filters.htmlIntent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity表示应用中的一个屏幕。通过将Inte

2016-06-23 10:49:30 3549

原创 关于AIDL一些需要注意的地方

1、从远程客户端进程来的调用是由不同的线程发起的,运行在不同的进程。所以,服务端必须处理好在同一时刻有多个从不同线程过来的请求的情况。也就是说,一个AIDL的实现必须是完成线程安全的,必须手动处理多线程的情况。2、AIDL接口当中的oneway关键字代表远程调用的行为。当使用的时候,远程调用不会阻塞,会立即返回。AIDL中支持的类型:1、所有的Java基本数据类型,比如int,

2016-06-19 13:53:25 7943

原创 启动远程service的两种方式:显示和隐式

1、显式启动Service端:需要声明android:exported="true",这样别的APP才能访问。            android:exported= "true">客户端:需要知道Sercvice的名字以及其Application所在的包名。public static final String NAME_GESTURE_DETEC

2016-06-19 10:48:53 11088

原创 使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端

前一篇文章讲了怎么在客户端使用AIDL实现IPC通信,调用远程服务端的方法。但是,远程服务端并不能主动给客户端返回信息。在很多情况下是需要远程服务端主动给客户端返回数据,客户端只需要进行监听即可,这是典型的观察者模式。这篇文章主要来解决一下这个问题。代码主要来自ApiDemos/App/Service/Remote Service Binding,下面对代码进行说明。1、首先是AI

2016-06-19 01:34:23 7869 5

原创 使用AIDL实现IPC通信之——简单调用远程服务的方法

为什么使用AIDLAIDL和Messenger都可以实现跨进程通信,Messenger底层也是基于AIDL的。使用AIDL而不使用Messenger的情况是:允许从不同应用的客户端访问你的Service且你的Service需要处理多线程的情况,因为Messenger中的消息默认是串行执行的。还有一点就是:使用Messenger主要是为了传递消息,很多时候需要跨进程调用服务端的方法,这种情况Me

2016-06-19 00:00:29 2926

翻译 Bound Service简介

来自:https://developer.android.com/guide/components/bound-services.html绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。基础知识绑

2016-06-16 20:44:08 1552

转载 Android代码规范

基本的命名法Java编程比较常见的有下面三种命名方式驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写下划线命名法:单词与单词间用下划线做间隔一般建议拿来做命名的单词要比较精悍短小,这样即使两三个单词一起拼装成一个命名,也不至于显得很冗长。当然有些单词我们也可以直接写成一些约

2016-06-16 15:29:00 516

原创 使用Messenger实现IPC通信

参考:https://developer.android.com/guide/components/bound-services.htmlMessenger简介如需让接口跨不同的进程工作,则可使用 Messenger 为服务创建接口。服务可以这种方式定义对应于不同类型 Message 对象的 Handler。此 Handler 是 Messenger 的基础,后者随后可与客户端分享一个 I

2016-06-16 13:15:00 1682

原创 构建一个能够接收别的App数据的APP

我们都知道每个Android手机上都有图库,图库中的图片可以发送给别的APP进行显示,比如发送给微信好友、发送到朋友圈以及发送给电脑等(这个经常使用)。那这是怎么实现的呢,我们能不能自己构建一个APP,当在图库中点击发送的时候能够从可选项中找到我们的APP,然后在APP当中显示图片。这是可以的,而且非常简单。在两个应用之间发送和接收数据最普遍的方式就是使用intent。Inetnt允许

2016-06-16 00:55:20 3826 1

原创 在Activity和Service之间使用Binder和回调接口进行通信

Activity和Service之间的通信方式有多种:通过broadcast、扩展Binder类、使用Messenger、使用AIDL等。扩展Binder类使用场景如果你的服务仅供本地应用使用,不需要跨进程工作,则可以实现扩展Binder 类,让你的客户端通过该类直接访问服务中的公共方法。此方法只有在客户端和服务位于同一应用和进程内这一最常见的情况下方才有效。例如,对于需要将

2016-06-15 19:36:54 8793 1

翻译 Android Service详解

来自:https://developer.android.com/guide/components/services.htmlService是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放

2016-06-14 13:03:42 3301

原创 在APP当中调用Android系统摄像头进行视频录制

1、获得摄像头Feature和写文件的权限<uses-feature android:name="android.hardware.camera2" android:required="true" /> 2、创建一个文件用来保存得到的视频 /** * 创建保存录制得到的视频文件 * * @return

2016-06-12 22:16:48 19288 1

原创 调用Android系统摄像头进行拍照以及从图库选择图片

很多时候我们需要调用系统摄像头进行拍照,然后得到拍照之后的图片,然后对图片进行一些处理。比如微信设置头像,就可以选择调用设备存在摄像头APP进行拍照,然后对图像进行裁剪,最终设置为头像,把头像传给服务器保存。调用系统摄像头拍照主要分为以下几个部分:1、获得摄像头Feature和写文件的权限由于不需要直接操作摄像头,而只是调用存在的APP,所以不需要Camera权限,自需要获得C

2016-06-11 14:10:06 8998 2

翻译 管理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 2521

原创 Java并发编程之——CyclicBarrier的使用

首先看一下官方关于CyclicBarrier的简介:/** * A synchronization aid that allows a set of threads to all wait for * each other to reach a common barrier point. CyclicBarriers are * useful in programs involving

2016-06-09 16:33:38 3441

原创 Java并发编程之——CountDownLatch的使用

最近在开发Android项目的时候有一个需求:在Service中开启多个线程并发的执行任务,当这三个线程执行完毕之后,主线程才能继续往下执行。刚开始使用的是AsyncTask+AtomicInteger的方式,然后在onpostexecute回调中对AtomicInteger进行自增且判断其值是否达到了要求的值,如果达到了要求的值就继续执行相应的操作,否则跳过。但是发现这种方式并不能很好的实现想要

2016-06-06 18:54:53 6262 1

原创 关于调用adapter.notifydatasetchanged()没有效果的问题

最近在使用ListView的时候,发现调用其Adapter的notifydatasetchanged()并没有刷新数据,代码如下:首先是初始化ListView:list = dbHelper.getalluser(); if (list.size() == 0) { Toast.makeText(MainActivity.this, "没有查询到任何数据", Toast.LENG

2016-06-05 21:48:48 2155 1

原创 Android数据存储之——SQLite数据库操作

对于一些重复的或者结构化的数据,保存到数据库是一个理想的选择,下面对SQLite数据库的操作进行讲解。首先是定义一个数据结构体:package com.easyliu.sqlite.db;import android.provider.BaseColumns;/** * 一般继承自BaseColumns,从中继承public static final String _ID = "

2016-06-05 21:18:51 2585

原创 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

原创 Android数据存储之——SharedPreferences

SharedPreferences简介       如果你有少量的键值对信息需要存储,应该使用SharedPreferences API,它可以存储以下数据类型的数据:booleans, floats, ints, longs, and strings。一个SharedPreferences对象指向一个包括键值对的文件并且提供简单的方法对这些数据进行读写。每一个SharedPreference

2016-06-05 13:02:44 848

翻译 Android进程和线程

翻译自:https://developer.android.com/guide/components/processes-and-threads.html#Processes一直觉得看任何书都不如看Android官方文档,权威又全面,全是干货!进程和线程当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Lin

2016-06-02 15:56:47 1192

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除