![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 61
你温柔的背后是心情的曲折
技术达人
展开
-
Android例子—Activity与Service通信
我们前面的操作都是通过Activity启动和停止Service,假如我们启动的是一个下载 的后台Service,而我们想知道Service中下载任务的进度!那么这肯定是需要Service 与Activity进行通信的,而他们之间交流的媒介就是Service中的onBind()方法! 返回一个我们自定义的Binder对象!基本流程如下:自定义Service中,自定义一个Binder类,然后将需要暴露原创 2017-03-28 22:18:11 · 451 阅读 · 0 评论 -
Android例子—AIDL实现两个进程间的简单通信
1.服务端Step 1:创建AIDL文件IPerson.aidlpackage com.jay.aidl;interface IPerson { String queryPerson(int num);}我们打开IPerson.java看看里面的代码: IPerson.java/* * This file is auto-generated. DO NOT MODIFY. * Or原创 2017-03-30 10:38:54 · 498 阅读 · 0 评论 -
Android例子—直接通过Binder的onTransact完成跨进程通信
Android可以通过Binder的onTrensact方法来完成通信,下面就来简单试下下,还是前面那个根据 序号查询名字的例子:服务端实现:/** * Created by Jay on 2015/8/18 0018. */public class IPCService extends Service { private static final String DESCRIPTOR =原创 2017-03-30 12:01:35 · 6385 阅读 · 1 评论 -
Android基础—Service启动流程分析
Service的生命周期图生命周期解析好的,从上图的生命周期,我们可以知道,Android中使用Service的方式有两种:StartService()启动ServiceBindService()启动Service PS:还有一种,就是启动Service后,绑定Service!相关方法详解:onCreate():当Service第一次被创建后立即回调该方法,该方法在整个生命周期 中只会调用原创 2017-03-28 22:35:53 · 418 阅读 · 0 评论 -
Android例子—设置Activity全屏的三种方法
1)代码隐藏ActionBar 在Activity的onCreate方法中调用getActionBar.hide();即可2)通过requestWindowFeature设置 requestWindowFeature(Window.FEATURE_NO_TITLE); 该代码需要在setContentView ()之前调用,不然会报错!!! 注:把requestWindowFeature(W原创 2017-03-28 09:11:35 · 1271 阅读 · 0 评论 -
Android例子—关闭所有Activity_完全退出App的方法
随时关闭所有Activity 有时我们可能会打开了很多个Activity,突然来个这样的需求,在某个页面可以关掉 所有的Activity并退出程序!好吧,下面提供一个关闭所有Activity的方法, 就是用一个list集合来存储所有Activity!具体代码如下:public class ActivityCollector { public static LinkedList<Ac原创 2017-03-28 08:36:25 · 2056 阅读 · 1 评论 -
Android例子—双击退出程序的两种方法
1、定义一个变量,来标识是否退出// 定义一个变量,来标识是否退出 private static boolean isExit = false; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.原创 2017-03-28 08:45:00 · 1252 阅读 · 0 评论 -
Android基础—Binder机制
IBinder和Binder是什么鬼?我们来看看官方文档怎么说: 中文翻译: IBinder是远程对象的基本接口,是饿了高性能而设计的轻量级远程调用机制的核心部分。但他 不仅用于远程调用,也用于进程内调用。该接口定义了与远程对象间交互的协议。但不要直接实现 这个接口,而是继承(extends)Binder。 IBinder主要的API是transact(),与之对应的API是Bind原创 2017-03-30 10:00:00 · 540 阅读 · 0 评论 -
Android基础—IntentService的使用
如果我们直接把 耗时线程放到Service中的onStart()方法中,虽然可以这样做,但是很容易 会引起ANR异常(Application Not Responding),而Android的官方在介绍 Service有下面这样一段话:直接翻译:1.Service不是一个单独的进程,它和它的应用程序在同一个进程中2.Service不是一个线程,这样就意味着我们应该避原创 2017-03-28 21:55:35 · 424 阅读 · 0 评论 -
Android基础—常用的系统广播总结
Intent.ACTION_AIRPLANE_MODE_CHANGED;//关闭或打开飞行模式时的广播<strong>Intent.ACTION_BATTERY_CHANGED;//充电状态,或者电池的电量发生变化//电池的充电状态、电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册<strong>Intent.ACTION_BATTE原创 2017-03-30 16:23:20 · 303 阅读 · 0 评论 -
Android基础—ContentProvider概念讲解
ContentProvider概念讲解原创 2017-03-30 18:39:53 · 300 阅读 · 0 评论 -
Android例子—内容提供者操作收件箱信息
核心代码:private void getMsgs(){ Uri uri = Uri.parse("content://sms/"); ContentResolver resolver = getContentResolver(); //获取的是哪些列的信息 Cursor cursor = resolver.query(uri, new String[]{"addre原创 2017-03-30 18:42:33 · 492 阅读 · 0 评论 -
Android例子—内容提供者操作手机联系人
简单的读取手机联系人核心代码private void getContacts(){ //①查询raw_contacts表获得联系人的id ContentResolver resolver = getContentResolver(); Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; //查询联原创 2017-03-30 21:35:28 · 448 阅读 · 0 评论 -
Android例子—自定义ContentProvider
接下来我们就来一步步实现: 在开始之前我们先要创建一个数据库创建类: DBOpenHelper.javapublic class DBOpenHelper extends SQLiteOpenHelper { final String CREATE_SQL = "CREATE TABLE test(_id INTEGER PRIMARY KEY AUTOINCREMENT,name)";原创 2017-03-30 21:56:43 · 275 阅读 · 0 评论 -
Android例子—开源中国客户端Activity管理类
package net.oschina.app;import java.util.Stack;import android.app.Activity;import android.app.ActivityManager;import android.content.Context;public class AppManager { private static Stack<Activit原创 2017-03-28 18:42:35 · 291 阅读 · 0 评论 -
Android基础—Notification(状态栏通知)详解
1.设计文档部分解读1)Notification的基本布局上面的组成元素依次是:Icon/Photo:大图标Title/Name:标题Message:内容信息Timestamp:通知时间,默认是系统发出通知的时间,也可以通过setWhen()来设置Secondary Icon:小图标内容文字,在小图标的左手边的一个文字转载 2017-03-22 11:21:58 · 2422 阅读 · 0 评论 -
Android基础—深入了解AccessibilityService
AccessibilityService是一个辅助类,可以监听我们手机的焦点,窗口变化,按钮点击等等。实现它的服务需要在手机设置里面->辅助功能在这里面找到你自己实现的辅助类,然后打开它就可以进行我们一系列的监听了。原创 2016-12-27 21:53:25 · 1309 阅读 · 0 评论 -
Android例子—Widget的简单使用介绍
Widget是安卓的一个桌面小工具组件—窗口小部件,是微型应用程序视图,可以嵌入到其他应用程序(如主屏幕)和接收定期更新。其本质是一个广播,即BroadcastReceiver,所以,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver就可原创 2016-12-28 14:08:29 · 4773 阅读 · 1 评论 -
Android问题—Toast不显示的原因和在子线程中使用方法以及Looper类详细解析
Toast不显示的原因和在子线程中使用方法以及Looper类详细解析原创 2016-12-29 16:32:27 · 2889 阅读 · 0 评论 -
Android问题—Android源码下载方法
Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例. 官方网站: http://source.android.com/source/downloading.html 下载单独项目的源码:https://github.com/android1、下载Git(版本控制工具). 调出命令行: ctrl + alt + Tsudo原创 2017-01-20 09:32:41 · 352 阅读 · 0 评论 -
Android基础—Android系统启动流程分析
当系统引导程序启动Linux内核,内核会加载各种数据结构,和驱动程序,加载完毕之后,Android系统开始启动并加载第一个用户级别的进程:init(system/core/init/Init.c)查看Init.c代码,看main函数int main(int argc, char **argv){ ... //执行Linux指令 mkdir("/dev", 0755);原创 2017-01-20 10:05:19 · 298 阅读 · 0 评论 -
Android基础—AsyncTask机制
AsyncTask机制分析原创 2017-01-20 10:19:04 · 196 阅读 · 0 评论 -
Android问题—Android源码编译
Android源码编译在编译源码之前需要做一些准备操作, 详细步骤如下: 1. 安装JDK, google官方要求编译2.3源码需要JDK1.6.1). 下载JDK1.6, 下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html、原创 2017-01-20 11:06:27 · 271 阅读 · 0 评论 -
Android问题—SDK更新不了问题解决
问题阐述相信大家在更新SDK的时候都会遇到更新不了的问题,而且打不开Google搜索,这是因为天朝墙了Google,所以要么只能通过VPN代理又或者改HOSTS才能访问,更新SDK!本节来介绍两种更新SDK的方法!1.修改hosts文件直接百度"Google hosts 2015"就有一堆了,而笔者常用的是: google hosts 2015,持续更新-360原创 2017-03-07 22:12:05 · 1647 阅读 · 0 评论 -
Android基础—.9 图片讲解
什么是.9图片至于什么是.9图片这里就简单提一下,即图片后缀名前有.9的图片,如pic.9.png、pic1.9.jgp,诸如此类的图片就称为.9图片。 .9图片的作用①.9图片的作用是在图片拉伸的时候特定的区域不会发生图片失真,至于哪些部分不会失真那么得看你的图片是如何绘制的。②当一张图片作为背景时可以指定前景内容的显示区域。如图:转载 2017-03-09 07:43:30 · 225 阅读 · 0 评论 -
Android基础—Handler消息机制
Message类的obtain方法消息队列顺序的维护是使用单链表的形式来维护的把消息池里的第一条数据取出来,然后把第二条变成第一条if (sPool != null) { Message m = sPool; sPool = m.next; m.next = null; sPoolSize--; return m;}创建Handler对象时,在构造方原创 2017-01-20 10:44:08 · 264 阅读 · 0 评论 -
Android问题—反编译APK获取代码&资源
1.要准备的三个工具apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载: 反编译相关的三个工具.zip2.使用a转载 2017-03-16 22:10:21 · 981 阅读 · 0 评论 -
Android例子—自定义Toast(吐司)样式
1.直接调用Toast类的makeText()方法创建这是我们用的最多的一种形式了!比如点击一个按钮,然后弹出Toast,用法: Toast.makeText(MainActivity.this, "提示的内容", Toast.LENGTH_LONG).show(); 第一个是上下文对象!对二个是显示的内容!第三个是显示的时间,只有LONG和SHORT两种 会生效,即时你定义了其他的值,最转载 2017-03-22 09:22:27 · 1620 阅读 · 0 评论 -
Android例子—为Activity设置过场动画
所谓的过场动画就是切换到另外的Activity时加上一些切换动画,比如淡入淡出,放大缩小,左右互推等! 当然,我们并不在这里详细讲解动画,后面有专门的章节来讲解这个,这里只教大家如何去加载动画,另外 给大家提供了一些比较常用的过渡动画,只要将相关动画文件添加到res/anim目录下,然后下述方法二选一 就可以实现Activity的切换动画了!1)方法一:2)方法二:通过style进行配置,这个是全原创 2017-03-28 09:03:06 · 2674 阅读 · 1 评论 -
Android问题—传递复杂数据的AIDL Service
实际开发中,我们可能需要考虑传递复杂数据类型的情况!下面我们来学习下 如何向服务端传递复杂数据类型的数据!开始之前我们先来了解Parcelable接口!Parcelable接口简介: 相信用过序列化的基本上都知道这个接口了,除了他还有另外一个Serializable,同样是用于序列化的, 只是Parcelable更加轻量级,速度更快!但是写起来就有点麻烦了,当然如果你用的as的话可以用 的插件原创 2017-03-30 11:01:23 · 632 阅读 · 0 评论 -
Android例子—简单定时后台线程的实现
前者不适合于需要长期在后台运行的定时任务,CPU一旦休眠,Timer中的定时任务 就无法运行;Alarm则不存在这种情况,他具有唤醒CPU的功能,另外,也要区分CPU 唤醒与屏幕唤醒!使用流程:Step 1:获得Service: AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);Step 2:通过set原创 2017-03-31 11:24:28 · 1101 阅读 · 0 评论 -
Android例子—Intent之复杂数据的传递
Intent传递简单数据 就是可以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;传递多个的话,可以使用Bundle对象作为容器,通过调用Bundle的putXxx先将数据 存储到Bundle中,然后调用Intent的putExtras()方法将Bundle存入Intent中,然后获得Intent以后, 调用get原创 2017-03-31 15:59:06 · 1362 阅读 · 0 评论 -
Android基础—WebView(网页视图)基本用法
本节引言本节给大家带来的是Android中的一个用于显示网页的控件:WebView(网页视图)。现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!所谓的HTML5端就是:HTML5 + CSS + JS来构建 一个网页版的应用,而这中间的媒介就是这个WebView,而Web和网页端可以通过JS来进行交互,比如, 网页读取手机联系人,调用手机相转载 2017-04-07 21:57:29 · 778 阅读 · 0 评论 -
Android基础—WebView和JavaScrip交互基础
本节引言:在上一节中我们对Android的WebView(网页视图)进行了学习,相信已经了解了WebView的基本用法;而本节我们要学习的就是通过:HTML -> JS ->Java来完成HTML5端与Android手机间的 互访!好的,话不多说,有吗有真相,让我们通过编写代码来体验这种微妙的联系吧~PS:为了方便,本节用到的HTML都是以文件的形式放到assets目录转载 2017-04-07 22:42:33 · 305 阅读 · 0 评论 -
Android问题—Android 4.4后WebView的一些注意事项
本节引言:本节参考原文:Android 4.4 中 WebView 使用注意事项.md从Android 4.4开始,Android中的WebView不再是基于WebKit的,而是开始基于Chromium,这个改变 使得WebView的性能大幅提升,并且对HTML5,CSS,JavaScript有了更好的支持!虽然chromium完全取代了以前的WebKit for转载 2017-04-07 23:23:24 · 3683 阅读 · 0 评论 -
Android例子—WebView文件下载
1.调用其它浏览器下载文件:这个很简单,我们只需为WebView设置setDownloadListener,然后重写DownloadListener的 onDownloadStart,然后在里面写个Intent,然后startActivity对应的Activity即可!关键代码如下:wView.setDownloadListener(new DownloadListen转载 2017-04-08 11:36:22 · 769 阅读 · 0 评论 -
Android问题—WebView缓存问题
1.缓存的分类:首先要说的一点是缓存的分类,我们缓存的数据分为:页面缓存和数据缓存页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。 而缓存的索引放在:/data/data//databases 对应的文件放在:/data/data/p转载 2017-04-08 12:06:20 · 2981 阅读 · 0 评论 -
Android例子—基于socket实现简易聊天室
实现的效果图:先把我们的服务端跑起来:接着把我们的程序分别跑到两台模拟器上:接下来我们来写代码:首先是服务端,就是将读写socket的操作放到自定义线程当中,创建ServerSocket后,循环 调用accept方法,当有新客户端接入,将socket加入集合当中,同时在线程池新建一个线程!另外,在读取信息的方法中,对输入字符串进行判断,如果为bye字转载 2017-04-08 16:09:58 · 3108 阅读 · 1 评论 -
Android基础—基于Socket实现上传大文件
上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好!1.运行效果图:1.先把我们编写好的Socket服务端运行起来:转载 2017-04-11 16:32:43 · 2349 阅读 · 2 评论 -
Android问题—Bitmap引起的OOM问题的解决办法
1.什么是OOM?为什么会引起OOM?答:Out Of Memory(内存溢出),我们都知道Android系统会为每个APP分配一个独立的工作空间, 或者说分配一个单独的Dalvik虚拟机,这样每个APP都可以独立运行而不相互影响!而Android对于每个 Dalvik虚拟机都会有一个最大内存限制,如果当前占用的内存加上我们申请的内存资源超过了这个限制 ,系统就会抛出OOM错误!另外,这里转载 2017-04-12 17:56:39 · 7148 阅读 · 1 评论