Android5.x Notification应用解析
本文首发于微信公众号「后厂村码农」
Notification可以让我们在获得消息的时候,在状态栏,锁屏界面来显示相应的信息,很难想象如果没有Notification,那我们的qq和微信以及其他应用没法主动通知我们,我们就需要时时的看手机来检查是否有新的信息和提醒着实让人烦心,也体现出Notification重要性。这里会介绍三种Notification,分别是普通的Notification,折叠式Notification和悬挂式Notification。
1. 普通Notification首先创建Builder 对象,用PendingIntent 控制跳转,这里跳转到网页
Notification.Builder builder = new Notification.Builder(this);Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://blog.csdn.net/itachi85/"));PendingIntent pendingIntent = PendingInte ...
Android5.x CardView 应用解析
本文首发于微信公众号「后厂村码农」
Android 5.0版本中新增了CardView, CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。也可以布局其他View。
如果sdk低于5.0我们仍旧要引入v7包,我用的是android studio所以我们需要在build.gradle加入如下代码用来自动导入support-v7包,记得配置完后重新Build一下工程。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' compile 'com.android.support:cardview-v7:22.1.0'}
先看看布局:
<?xml version="1.0" encoding="u ...
Android5.x RecyclerView 应用解析
本文首发于微信公众号「后厂村码农」
1.导入v7包要想使用RecyclerView,我们首先要导入support-v7包,因为我用的是android studio所以我们需要在build.gradle加入如下代码用来自动导入support-v7包,记得配置完后重新Build一下工程。
dependencies { compile fileTree(include: '*.jar', dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0' compile 'com.android.support:recyclerview-v7:22.1.0'}
2. 使用RecyclerView 和ListView的写法大概一样:
RecyclerView mRecyclerView= (Recy ...
Java并发编程(一)线程定义、状态和属性
一 、线程和进程
1. 什么是线程和进程的区别: 线程是指程序在执行过程中,能够执行程序代码的一个执行单元。在java语言中,线程有四种状态:运行 、就绪、挂起和结束。 进程是指一段正在执行的程序。而线程有时也被成为轻量级的进程,他是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内功空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程都拥有自己的棧空间。 2. 为何要使用多进程 在操作系统级别上来看主要有以下几个方面:
使用多线程可以减少程序的响应时间,如果某个操作和耗时,或者陷入长时间的等待,此时程序讲不会响应鼠标和键盘等的操作,使用多线程后可以把这个耗时的线程分配到一个单独的线程去执行,从而使程序具备了更好的交互性。
与进程相比,线程创建和切换开销更小,同时多线程在数据共享方面效率非常高。
多CPU或者多核计算机本身就具备执行多线程的能力,如果使用单个进程,将无法重复利用计算机资源,造成资源的巨大浪费。在多CPU计算机使用多线程能提高CPU的利用率。
使用多线程能简化程序的结构,使程序便于理解和维护
二、创建线程多线程的实现一般 ...
Java并发编程(三)volatile域
前言有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一个线程并发更新的。再讲到volatile关键字之前我们需要了解一下内存模型的相关概念以及并发编程中的三个特性:原子性,可见性和有序性。
1. java内存模型与原子性,可见性和有序性 Java内存模型规定所有的变量都是存在主存当中,每个线程都有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作。并且每个线程不能访问其他线程的工作内存。 在java中,执行下面这个语句:
int i=3;
执行线程必须先在自己的工作线程中对变量i所在的缓存行进行赋值操作,然后再写入主存当中。而不是直接将数值3写入主存当中。那么Java语言 本身对 原子性、可见性以及有序性提供了哪些保证呢?
原子性 对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。来看一下下面的代码:
x = 10; //语句1y = x; ...