- 博客(38)
- 资源 (22)
- 问答 (3)
- 收藏
- 关注
原创 Java-FutureTask
//Runnable封装一个异步运行的任务,可以把它想象成为一个没有参数和返回值的异步方法。public interface Runnable { public abstract void run();}//Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。public interface Callable<V> {
2017-06-30 19:27:50 386
原创 Android-volley
推荐阅读:Android 异步网络请求框架-Volley如上官方给出的Volley架构图,蓝色为主线程,绿色为缓存线程,橙色是网络线程。 总的来说,就是一个请求队列和三种线程,UI线程(1个),Cache线程(1个)和Network线程(默认是4个)。其中蓝色部分代表主线程,绿色部分代表缓存线程,橙色部分代表网络线程。我们在主线程中调用RequestQueue的add()方法来添加一条网络请求,这
2017-06-29 17:12:29 329
原创 Java-算法分析及其优劣判断
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。1、时间复杂度算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做 T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,
2017-06-25 18:10:52 2569
原创 android - 提交代码前的Review 清单
清理操作1.页面退出时,是否完成必要的清理操作 1) 是否调用 Handler 的 removeCallbacksAndMessages(null) 来清空 Handler 里的消息; 2) 是否取消了还没完成的请求; 3) 在页面里注册的监听,是否反注册; 4) 假如自己用到观察者模式,是否反注册; 5) 假如用了 RxJava 的话,是否解除订阅;2.数据库的游标是否已经关闭 这个点
2017-06-25 17:57:35 477
原创 java-素数(质数)
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。import java.util.Scanner;/** * Created by Administrator on 2017/6/23. */public class SuShu { public static void main(String[] args) { Scanne
2017-06-23 23:38:17 2374
原创 java-完数
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数” 例如, 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064 import java.util.Scanner;/*
2017-06-23 23:25:52 772
原创 Java-判断回文数
import java.util.Scanner;/** * 回文数:一种数字,如:12321, 这个数字正读是12321,倒读也是12321, * 即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。 * Created by Administrator on 2017/6/23. */public class HuiWenTest { public static...
2017-06-23 23:10:15 5662
原创 LRU和LFU的区别
LFU和LRU算法的不同之处:LRU的淘汰规则是基于访问时间, 而LFU是基于访问次数的。LFULFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。具体实现如下: 新加入数据插入到队列尾部(因为引用计数为1);队列中的数据被访问后,引用计数增加,队列重新排序;当需要淘汰数据时,将已经排序的
2017-06-21 17:48:16 3116
原创 Android框架
从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及linux内核层,分别介绍如下:1)应用程序层(Application)Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是 用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其
2017-06-21 16:57:54 1766
原创 java-反射获得泛型参数
public class Person<T> { } import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** * Created by Administrator on 2017/6/20. */public class Student extends Person<String> {
2017-06-20 18:21:23 332
原创 android-OKHttp
Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP 可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。OkHttp是一个高效的HTTP库: 支持 SPDY ,共享同一个Soc
2017-06-20 18:19:01 552
原创 android-Activity生命周期
public class HelloActivity extends Activity { public static final String TAG = "HelloActivity"; /** * 第一个被运行的方法 * 初始化页面 * Bundle恢复上次的状态 */ @Override public void on
2017-06-20 13:37:54 378
原创 Android存储对象到本地(SharedPreferences方式和file方式)
Android中能够被保存的对象都是被序列化过的对象。SharedPreferences存储对象请参考: Android-存储:SharedPreferences使用及其存储类型file存储对象存入的对象必须序列化, 实现Serializable接口, 然后用对象流进行IO操作.在Android平台下,一个应用程序中所有的数据都是私有的。当应用程序被安装到系统中后,其所在的包会有一个文件夹用于存放
2017-06-20 00:14:56 2970
原创 Android-存储:SharedPreferences使用及其存储类型(aidl支持的数据类型 / bundle传值类型)
日常开发中我们常常要用到保存数据,Android中常用的存储方式有SQLite,sharedPreferences 等,当然也有各自的应用场景,前者适用于保存较多数据的情形,后者责倾向于保存用户偏好设置比如某个checkbox的选择状态,用户登录的状态、配置信息,实现记住密码功能等等,都是以键值对的形式进行的文件读取。 但是每存储一个数据都要提供一个key,如果要存储多个数据那岂不是要写多个k...
2017-06-19 21:28:31 33849 1
原创 ListView高效刷新——刷新单条数据
对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可。用的listview展示所有正在下载的内容。因为下载进度要实时更新,所以要不停的调用notifyDateSetChanged刷新数据。这样会不停的重新绘制整个listview的界面,性能开销非常大。而且如果每个item有图片的话,每个item的图片都需要
2017-06-19 20:29:21 10885
原创 Android-AsyncTask
AsyncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.优点:简单,快捷 AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecu
2017-06-17 11:01:42 396
原创 java-线程的终止和调度
终止线程的三种方法 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。1、使用退出标志终止线程:在Activity开启的子线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭子
2017-06-17 09:13:11 502
原创 Java-线程的运行状态
参考: 学习java线程状态和看懂thread dump文件中的线程信息 Java线程中wait状态和block状态的区别?1,线程状态为“waiting for monitor entry”: 意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待。 此时线程状态一般都是 Blocked: java.lang.Thread.State: BLOCKED (o
2017-06-17 08:45:44 2310
原创 Android---多线程:继承Thread 类和实现Runnable 接口的区别
参考: Java线程中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1、通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中。多个线程分别完成自己的任务。 2、通过实现Runnable接口,实例化Thread类。多个线程共同完成一个任务。有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点: 1、j
2017-06-16 22:06:11 2205
原创 Android - 全局异常捕获
今天就来说说作为程序猿的我们每天都会遇到的东西bug,出bug不可怕可怕的是没有出bug时的堆栈信息,那么对于bug的信息收集就显得尤为重要了,一般用第三方bugly或者友盟等等都能轻易收集,但是由于公司不让使用第三方,而安卓正好有原生的异常收集类UncaughtExceptionHandler。UncaughtExceptionHandler见名知意,即他是处理我们未捕获的异常,具体使用分两步
2017-06-16 09:42:48 551
原创 android - AMS及相关概念、唤醒崩溃
Android是基于Linux的一个操作系统,它可以分为五层,下面是它的层次架构图Android的五层架构从上到下依次是应用层,应用框架层,库层,运行时层以及linux内核层。Linux是基于C的,而Android是基于Java的(当然底层也是C)。所以这里就会fork出一个Zygote Java进程用来fork出其他的进程。Zygote进程是所有Java进程的父进程。ActivityManager
2017-06-16 09:34:26 674
原创 java-Collections
1.Collections(注意不是Collection,而是Collections,多了一个s) 2.它是一个集合工具类 3.方法分类: 常规操作(查找,最大,最小等)、 排序、 线程安全(同步)操作、 不可变集合import java.util.*;/** * Created by Administrator on 2017/6/15. */public class Colle
2017-06-15 22:45:27 308
原创 GitHub-fork/star/watch/follow
fork:将【开源项目】拷贝一份到自己的账号下 fork就相当于在原本的项目分支上建立一个分支,这个分支属于你自己,你也可以任意修改。如果想将你修改后的代码整合到原有的项目中,需要做pull request操作,当然这得经过作者同意。star:给【项目】点赞watch:收听【开源项目】的动态follow:关注【作者】的动态总结:star 的作用是收藏,目的是方便以后查找。 watch 的作用是关
2017-06-15 00:23:29 2547
原创 Android三种网络通讯方式/网络通讯机制
1.标准Java接口java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。 比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。HttpURLConnectionpackage java.net;abstract public
2017-06-13 16:56:48 2463
原创 进程的优先级
1、 前台进程 -Activte/Foreground processActive (前台) process是包含(与用户交互的)控件的那种应用程序。这些是android通过回收资源来极力保护的进程。Active process包括: (1)处于“active”状态的Activity,它们运行在前台来响应用户的事件。 (2)Activity Service或者正在执行onReceive事件处理
2017-06-13 16:21:39 249
原创 android-ViewPager的轮播
viewpager的轮播实现需要 1、定时切换:每隔一定时间自动播放,也支持手动切换 2、无限播放:最后一张切到第一张重新播放第一步:主界面布局activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and
2017-06-13 15:57:14 650
原创 Alpha、Beta、RC、GA版本的区别
Alpha:内部测试版。是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。Beta:公开测试版。也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。RC:(Release Candidate)顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。GA:General Availability,正式发布的版
2017-06-10 08:38:59 2162
原创 Android-IM即时通讯:环信
参考:基于环信即时通信云V2 SDK开发的聊天demo Android基于环信SDK开发IM即时聊天(一) android-使用环信SDK开发即时通信功能及源码下载IM :即时通信系统(IM,Instant Messenger)。Android第三方即时聊天SDK的有:网易云信、环信和融云等。参考:3款IM云服务产品对比 即时通讯云产品横向评测这里以环信来做即时通讯demo达到两个效果:
2017-06-09 20:41:01 5829 1
原创 android - context
public abstract class Context {...}public class ContextWrapper extends Context {...}//Application public class Application extends ContextWrapper{...}//Service public abstract class Service extends
2017-06-08 12:28:49 264
原创 java堆、栈、堆栈的区别
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令),用new的方式是生成不同的对象。每一次生成一个。只有通过new()方法才能保证每次都创建一个新的对象。 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本
2017-06-06 23:40:56 2434
原创 TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层, 每层都有相应的协议,如下图IP:网络层协议;(高速公路)TCP和UDP:传输层协议;(卡车)HTTP:应用层协议;(货物)。HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。SOCKET:套
2017-06-05 22:56:19 37249 10
原创 闹钟实例与远程机制AIDL工具android:process=":remote"结合应用
由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象。在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作。这里通过与闹钟实例来实现这一机制的简单实现:
2017-06-03 01:49:38 756
原创 Android-service之aidl
相关类关系:public interface IBinder {...}public class Binder implements IBinder {...}//BookManager为自定义的aidl接口public interface BookManger extends IInterface { //Stub为内部类 public static abstract clas
2017-06-03 01:30:30 483
原创 Android -序列化 : Serializable / Parcelable
一、简介● 序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化。● 反序列化 反序列化恰恰是序列化的反向操作,也就是说,把已存在在磁盘或者其他介质中的对象,反序列化(读取)到内存中,以便后续操作,而这个过程就叫做反序列化。 概括性来说 序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他
2017-06-02 19:50:30 633
原创 android-布局优化:merge+include
介绍:1.merge布局 和FrameLayout类似,相同的效果.不同的是 merge布局只能被<include>标签包含. 或者Activity.setContentView所使用.当LayoutInflater遇到能被其他layout用<include>包含进去,并不再另外生成ViewGroup容器,本元素也特别有用这个标签时,它会跳过它,并将<merge />内的元素添加到<merge />
2017-06-01 18:32:53 457
原创 android - 布局优化-viewstub
ViewStub是Android中view的一种优化方案,它的目的是在不需要显示view的时候不去加载view,这样在view的创建时期,减少了加载的资源,优化了view。invisible 、gone 、 viewstub的区别:1、invisible view设置为invisible时,view在layout布局文件中会占用位置,但是view为不可见,该view还是会创建对象,会被初始......
2017-06-01 17:19:13 626
原创 android studio + NDK + JNI
推荐:android studio 中 添加.so 文件JNI介绍:Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 JNI是J...
2017-06-01 11:13:56 821
android studio (as)主题theme
2018-10-08
android反编译工具
2018-06-04
httpClient4.5.3+Jsoup1.10.2
2018-02-23
httpclient-4.5.3完整jar包
2018-02-23
decp2 dbutils pool2 mysql
2016-11-15
android studio 安装插件gsonformat 出现timeout
2018-03-30
求解输出??并解析~谢谢。
2016-03-13
java问题~数字判断!~~~~~
2016-03-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人