基本概念
IntentService作用
IntentService是Service类的子类,常用来在后台执行耗时的异步请求。我们不用去关心Service的创建和销毁的细节。也不用单独开线程,只管处理自己的任务,处理完过后系统会自动销毁该服务,启动IntentService的方式和普通Service相同,但是使用起来却极其简单。使用示例如下:
不忘初心,方得始终
大家知道子线程没有办法对UI界面上的内容进行操作,如果操作,将抛出异常,为了让子线程能间接操作UI界面,Android中引入了Handler消息传递机制,通过Handler切换到主线程进行UI操作。
Handler用于发送和处理消息。而发出的Message经过一系列的周转后,最终会传递回Handler中,最后更新UI。
Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之前交换数据。
MessageQueue是消息队列,用于存放Message。Message在消息队列中,等待Looper取出。每个线程中只会有一个MessageQueue对象。
Looper是每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入一个无限循环中,每当MessageQueue中存在一个Message,Looper对象就会将其取出,传递到Handler中进行处理。每个线程中只会有一个Looper对象。
在学习JAVA8 Lambda之前,必须先了解一下JAVA8中与Lambda相关的新特性,不然对于一些概念会感到比较陌生。
1、 接口的默认方法和静态方法
Java 8允许我们给接口添加一个默认方法,用default
修饰即可。默认方法可以重写,也可以不用重写。这就是和抽象方法的区别,在用法上,没有其他区别。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28public interface IMyInterface {
void onMethond(String str);//这是一个抽象方法
default String onDefalutMethod(){//这是一个默认方法
return "这是一个默认方法";
}
}
//重写默认方法
public class MyImpl1 implements IMyInterface {
public void onMethond(String str) {
// TODO Auto-generated method stub
}
public String onDefalutMethod() {
return "重写默认方法";
}
}
//不重写默认方法
public class MyImpl2 implements IMyInterface {
public void onMethond(String str) {
// TODO Auto-generated method stub
}
}
此外Java 8还允许我们给接口添加一个静态方法,用static
修饰即可。1
2
3
4
5
6
7
8
9
10
11
12
13public interface IMyInterface {
void onMethond(String str);//这是一个抽象方法
default String onDefalutMethod(){//这是一个默认方法
return "这是一个默认方法";
}
static String onStaticMethod(){
return "这是一个静态方法";
}
}
一直对于自定义view没有进行深入研究过,最近抽空开始整理整理自定义view相关的知识,以便可以有个系统的深入的认识,也希望能够给初学者一点启示。
本篇主要介绍自定义view中一些相关API以及相关知识点。
1 | //设置画笔的颜色 |
在日常开发中,可能会需要做长按保存图片这个功能,又或者需要做个截屏分享功能。最近正好在研究这些东西,写篇博客整理一下。
如果是网络图片,我们可以直接选择将图片下载下来后保存,这种方式,简单暴力,可以直接获得原图,本质其实就是下载文件。代码如下:
1 | public static boolean downloadBitmap(String urlString, File fileDir) { |