- 博客(41)
- 收藏
- 关注
原创 2.1使用synchronized实现同步方法
1.创建Account类,该类用于模拟银行账户public class Account { //账户的余额 private double balance; //取得账户的余额 public double getBalance() { return balance; } //设置账户的余额 public void setBalance(
2016-09-27 22:17:11 327
原创 1.12使用工厂类创建线程
工厂模式是面向对象编程中最常用的模式之一,它是一个创建者模式,使用一个类为其他的一个或者多个类创建对象。使用工厂类,可以 将对象的创建集中化,这样做的好处有:1) 更容易修改类,或者改变创建对象的方式。 2) 更容易为有限资源限制创建对象的数目。3) 更容易为生成的对象生成数据统计。 Java提供了ThreadFactory接口,这个接口实现了线程对象工厂。1.创建一个实现ThreadFactor
2016-09-26 09:27:49 336
原创 1.11线程组不可控异常的处理
这种做法是建立一个方法对线程组中的任何线程对象抛出的异常进行捕获。1.创建一个继承自ThreadGroup的MyThreadGroup类,并覆盖uncaughtException方法,用来捕获线程组线程抛出的异常。public class MyThreadGroup extends ThreadGroup{ public MyThreadGroup(String name) {
2016-09-26 09:01:11 489
原创 1.10线程的分组
1.创建继承Runnable接口的SearchTask类import java.util.Date;import java.util.Random;import java.util.concurrent.TimeUnit;public class SearchTask implements Runnable{ private Result result; public SearchT
2016-09-25 21:19:22 359
原创 1.9线程局部变量的使用
如果创建的对象是实现了Runnable接口的类的实例,并作为参数传给给多个线程对象并启动这些线程,那么所有的线程将共享共同的属性。在有的时候,如果不想某些属性被共享,那么就需要 使用Java提供的线程局部变量了。首先看一下不使用线程局部变量的例子:1.创建一个实现Runnable接口的UnSafeTask类import java.util.Date;import java.util.concurr
2016-09-24 23:52:57 319
原创 1.8线程中不可控的异常处理
Java中的异常有两种。 1.非运行时异常:这种异常必须在方法声明的throws语句中指定,或者在方法内捕获。 2.运行时异常:这种异常不必再 方法中指定,也不必在方法内捕获。线程的run方法不支持在方法中指定throws语句,在抛出非运行时异常,需要捕获处理异常;在抛出运行时异常,默认的是在控制台 输出堆栈信息,并退出程序。Java提供了一种在线程里捕获和处理运行时异常的机制。实现处理运行时异
2016-09-22 17:20:22 671
原创 1.7守护线程的创建与运行
1.创建一个实现Runnable接口的WriteTask类,每隔1秒向队列中添加一个Event对象。import java.util.Date;import java.util.Deque;import java.util.concurrent.TimeUnit;public class WriteTask implements Runnable{ /** * Data stru
2016-09-22 16:50:49 587
转载 Android--使用Intent打开各种文件
1.自定义android Intent类,可用于获取打开以下文件的intent:PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO 2.错误事例 Intent it = getPdfFileIntent(“file:///android_asset/helphelp.pdf”); 原因:可能是因为程序没有权限访问其它APK里的asset文件夹下的资源
2016-09-22 16:37:07 1074
原创 一切都是对象(一)
尽管Java是基于C++的,但是在相比之下,Java是一种更加纯粹的面向对象程序设计语言。1.用引用操作对象 Java将内存中的一切元素都视为对象,操纵的标识符其实是对象的一个“引用”。可以拥有一个引用,并且不一定要有一个对象与之关联。例如创建一个String引用: String s。安全的做法是在创建一个引用的同时就对它进行初始化。2.必须由你创建所有对象 通常在Java中用
2016-09-21 23:34:53 349
原创 1.6线程的终止
1.创建实现Runnable接口的DataSourcesLoader类,在run()方法中让它休眠4秒。import java.util.Date;import java.util.concurrent.TimeUnit;public class DataSourcesLoader implements Runnable{ @Override public void run() {
2016-09-21 23:21:35 269
原创 1.5线程的休眠和恢复
1.写一个实现Runnable接口的FileClock类import java.util.Date;import java.util.concurrent.TimeUnit;public class FileClock implements Runnable{ @Override public void run() { for(int i=0;i<10;i++
2016-09-21 09:53:17 288
原创 1.4线程中断的控制
如果线程实现了复杂的算法并且分布在几个方法中,或者线程里面有递归调用的方法,就得使用Java提供的InterruptedException异常来控制线程的中断。当检查到线程中断的时候,抛出InterruptedException异常,然后在run方法中捕获并处理这个异常。1.编写一个实现Runnable接口的FileSearch类,该类用于查找某个文件夹里是否含有某个文件。public class
2016-09-21 09:36:42 284
原创 1.3线程的中断
1.写一个继承自Thread的统计素数的PrimeGenerator类public class PrimeGenerator extends Thread{ @Override public void run() { long number=1L; while(true) { if(isPrime(numb
2016-09-19 22:22:56 328 1
原创 1.2线程信息的获取和设置
1.创建一个实现Runnable接口的Calculate类public class Calculate implements Runnable{ private int number; public Calculate(int number) { this.number=number; } @Override public void run
2016-09-19 22:10:05 377
原创 1.1线程的创建与运行
1.创建一个实现了Runnable接口的Calculate类public class Calculate implements Runnable{ private int number; public Calculate(int number) { this.number=number; } @Override public void ru
2016-09-19 17:58:58 245
翻译 ActivityManager的简单使用
1.获取栈顶Activity以及其所在进程public static String getTopActivityNameAndProcessName(Context context){ String processName=null; String topActivityName=null; ActivityManager activityManage
2016-09-19 17:43:02 1295
翻译 Handler(3)--在子线程中主线程的 消息队列发送消息
参考文章:Handler详解系列(三)–在子线程给主线程的消息队列发送消息这就是我们平常最常用的套路: 1 实例化mHandler 2 在子线程中使用该mHandler向主线程的消息队列发送消息 至于在哪里初始化mHandler,这个不是很重要.重要的是在初始化时传入的是谁的Looper. 在该示例中,正因为在初始化一个Handler时候使用的是主线程的Looper(即getM
2016-09-19 15:43:20 433
翻译 Handler(2)--主线程向自身消息队列发送消息
参考文章:Handler详解系列(二)–主线程向自身消息队列发送消息该示例中在主线程中给主线程自己的消息队列发送消息. * 步骤: * 1 利用getMainLooper()实例化一个Handler * 2 在主线程中发送消息. * * 正因为在初始化一个Handler时候使用的是主线程的Looper(即getMainLooper()) * 那么消息当然是发到了主线
2016-09-19 15:29:17 237
翻译 Handler(2)--主线程向自身消息队列发送消息
参考文章:Handler详解系列(二)–主线程向自身消息队列发送消息该示例中在主线程中给主线程自己的消息队列发送消息. * 步骤: * 1 利用getMainLooper()实例化一个Handler * 2 在主线程中发送消息. * * 正因为在初始化一个Handler时候使用的是主线程的Looper(即getMainLooper()) * 那么消息当然是发到了主线
2016-09-19 15:27:15 332
翻译 Handler(1)--异步消息机制简单学习
参考文章:Handler详解系列(一)Handler异步消息机制一、Android异步消息机制中主要涉及到: Thread Handler Looper MessageQueue 它们的相互关系如下: 1 Looper.prepare(); 1.1 为当前线程生成对应的Looper. 一个Looper包含了三个变量: mQu
2016-09-19 15:07:36 271
翻译 Android截屏的简单实现
代码如下:private void screenshot() { // 获取屏幕 View dView = getWindow().getDecorView(); dView.setDrawingCacheEnabled(true); dView.buildDrawingCache(); Bitmap bmp =
2016-09-19 11:34:01 323
翻译 自定义IamgeView,实现区域点击事件
1.自定义ImageViewpublic class RegionCoordView extends ImageView { private Context mContext; //上下文 public RegionCoordView(Context context) { this(context, null); } public RegionCoord
2016-09-19 11:30:23 450
原创 Android AlarmManager的简单使用
1.定时更换屏幕壁纸(1) 添加可以更换壁纸的权限<uses-permission android:name="android.permission.SET_WALLPAPER" />(2)服务类,用于壁纸的更换public class ChangeService extends Service { //定义定时更新的壁纸资源 int[] wallpapers = new int[]
2016-09-19 11:12:58 499
原创 Android中使用ClipDrawable实现缓缓打开一张图片的效果
1.clipdrawable.xml<?xml version="1.0" encoding="utf-8"?><clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@mipmap/ic_launcher" android:clipOrientation="horizon
2016-09-19 10:57:15 610
原创 Android SharedPreferences
1.SharedPreferences的使用(1) 使用SharedPreference存储数据public void setSharedPreference() { //获取SharedPreferences类的一个实例 sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
2016-09-19 10:34:11 270
翻译 Android中Excutor线程池的简单使用
1.newFixedThreadPool的使用 . 创立一个线程池,该线程池中有5个线程 . 将15个RunnableImpl对象放入线程中执行,可以看到这15个RunnableImpl在5个线程中调用private void testExecutors1(){ Executor executor= Executors.newFixedThreadPool(
2016-09-18 15:41:16 476
翻译 Android中对ThreadPoolExcutor的简单使用
1.优势: (1)降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 (2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 (3)提高线程的可管理性。线程是稀缺资源,如果入限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控。2.线程池的创建 new ThreadPoolExecutor
2016-09-18 15:13:07 817
翻译 Android保存Serializable数据到本地
1.定义一个Student类,实现Serializable接口public class Student implements Serializable { private Integer id; private String name; //注意定义此字段 public static final long serialVersionUID = 9527L; pu
2016-09-18 11:17:54 2376
原创 Android VelocityTracker
VelocityTracker用于监测手指滑动时候的速度。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" and
2016-09-14 14:17:28 550
翻译 ListView使用模拟数据进行分批加载测试
1.ListView的尾部文件 footview.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout
2016-09-14 10:55:18 425
翻译 Android4.4系统以上实现沉浸式状态栏
1.在页面中判断系统是否是4.4以上的//判断当前SDK版本号,如果是4.4以上,就是支持沉浸式状态栏的 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STAT
2016-09-14 09:49:09 636
翻译 Android拖拽的简单使用
1.对一个简单的控件能够实现拖拽操作ima = (ImageView)findViewById(R.id.iv_logo); // Sets the tag ima.setTag(IMAGEVIEW_TAG); ima.setOnLongClickListener(new View.OnLongClickListener() { @Override
2016-09-09 10:15:47 454
原创 使用MediaPlayer实现简单的录音
1.布局文件 activity_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android
2016-09-09 09:41:04 877
翻译 Android实现图片随意拖动、缩放
1.重写一个实现View.OnTouchListener的类,这里使用的是Matrix实现import android.graphics.Matrix;import android.graphics.PointF;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;p
2016-09-07 14:31:37 1118
原创 Dialog的简单使用
1.将状态栏完毕遮住的全屏的Dialog。(1)定义样式<style name="DialogFullScreen"> <item name="android:windowFullscreen">true</item> <item name="android:windowNoTitle">true</item> </style>(2)定义Dialog的布局文件
2016-09-07 12:56:47 385
原创 TextView的实例使用
1.仿照手机QQ,将字符串中含有的url设置成点击,点击之后可以实现跳转。 (1) 定义一个SpannableString对象,用于对字符串的各种处理,并定义一个字符串用于检测是否正确。String text = "这里使用百度的网址http://www.baidu.com和腾讯的网站http://www.qq.com进行测试"; private TextView textview;
2016-09-06 16:59:51 444
原创 Button的使用总结
1.如果同时为Button设置点击事件和长按事件,如果不想在触发长按事件的时候同时触发点击事件的话,那长按事件的返回值必须为true,将点击事件拦截。btnSend.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(V
2016-09-05 16:02:01 613
原创 Broadcast的简单使用
1.时时监测手机的电量、电压、电池温度private int BatteryN; //目前电量private int BatteryV; //电池电压private double BatteryT; //电池温度private String BatteryStatus; //电池状态private String BatteryTemp; //
2016-09-02 14:51:46 368
原创 Android存储
1.内部存储(1)往手机内存中存储private void writeToFile(){ try{ OutputStream os=openFileOutput("test.txt",Context.MODE_PRIVATE); //这里是将EditText中的数据写进内存 os.write(editText.getText().toString().ge
2016-09-02 14:42:32 303
翻译 Android中实现固定时间自动跳转的几种方式
1.Thread+HandlerHandler handler = new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case 1: Intent inte
2016-09-02 14:21:08 891
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人