摘要:
知识点 接受子线程发送的消息数据,并用此消息数据配合主线程更新UI。 根据消息数据中的标识msg.what,分类处理相应的操作。范例程序 为了让线程对象Runnable运行过程中,可以不断地将信息往Activity传递,所以用了Android.os.Handler对象及Android.os.Message对象,且在类成员变量中声明了两个整数:STOP_NOTIFIER与RUNNING_NOTIFIER,这两个整数将作为信息传递出来时的信号标识,前者为线程对象Runnable需要喊停的标识,后者为线程对象Runnable正在运行的标识。 本范例中,摆放一个按钮和一个进度条控件。按钮用于复位参数和 阅读全文
摘要:
Android内核是基于Linux 2.6内核的(目前最新开发版本是2.6.31),它是一个增强内核版本,除了修改部分 Bug 外,它提供了用于支持Android平台的设备驱动,其核心驱动主要包括: Android Binder,基于OpenBinder框架的一个驱动,用于提供Android平台的进程间通讯(IPC,inter-process communication)。 源代码位于drivers/staging/Android/binder.c Android 电源管理(PM) ,一个基于标准Linux电源管理系统的轻量级的Android 电源管理驱动,针对嵌入式设备做了很多优化。源代.. 阅读全文
摘要:
Android中的Handler<一>Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,例如: 联网读取数据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,,会收到Android系统的一个错误... 阅读全文
摘要:
操作是很有可能并发的,而界面只有一个这个和买票排队是一回事买票的人太多了,卖票的只有一个,只能一个一个来如果你开多线程,让100个人同时去买票,而且不排队,那么后果会怎么样- -同理,你开多线程,让100个线程去设置同一个TextView的显示内容,每个显示内容都不一样,它该听谁的?那为什么不直接new一个新线程而要使用一个所谓的handler?就是因为new了一个子线程才要用handler的,不然在主线程里更新UI要handler干什么?多此一举就好比只有1个人来买票,卖票的难道会跟他说:同志,请你排队!?handle是主线程 ,Thread是从线程。控件数据更改只能在主线程 里,所以要用h 阅读全文
摘要:
当用户选择“确定”,就退出当前的对话框。其中,有个很重要的函数,Activity.finish(),通过调用这个函数,退出当前运行的整个Android程序.当用户选择“取消”的时候,只要单纯的retuan,即可返回主程序.我们可以定义一个showTips()的专用方法在main Activity里面,那么,每次我们写的时候,就调用这个函数的就可以了。private void showTips(){AlertDialog alertDialog = new AlertDialog.Builder(Activity.this).setTitle(“退出程序”).setMessage(“是否退出程序 阅读全文
摘要:
1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲系统处理性能,加在多线程并发时资源挣夺最激烈的地方,这就实现了线程的同步机制同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程仍然请求的到,A线程无需等待显然,同步最最安全,最保险的 阅读全文
摘要:
StringBuffer stringBuffer=new StringBuffer();List list=new ArrayList();Map<String, String> testmap = new HashMap<String, String>();testmap.put("status", "1");testmap.put("ticket_code", "11111");testmap.put("lotteryNo", "CMK");te 阅读全文
摘要:
同步:函数没有执行完不返回,线程被挂起; 阻塞:没有收完数据函数不返回,线程也被挂起; 异步:函数立即返回,通过事件或是信号通知调用者; 非阻塞:函数立即返回,通过select通知调用者同步:函数没有执行完不返回,线程被挂起阻塞:没有收完数据函数不返回,线程也被挂起异步:函数立即返回,通过事件或是信号通知调用者非阻塞:函数立即返回,通过select通知调用者这样看来异步和非阻塞有什么区别呢?异步=非阻塞?同步是在操作系统层面上,阻塞是在套接字上?Reactor是同步Proactor是异步?回答:同步、异步、阻塞和非阻塞的概念 在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调... 阅读全文
摘要:
在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。最后需要说明的是,在UI线程(主线程 阅读全文
摘要:
在android开发中,我们离不开资源文件的使用,从drawable到string,再到layout,这些资源都为我们的开发提供了极大的便利,不过我们平时大部分时间接触的资源目录一般都是下面这三个。/res/drawable/res/values/res/layout但android的资源文件并不止这些,下面就为大家介绍一下另外三个资源目录/res/xml/res/raw/assets首先是/res/xml ,这个目录中大家可能偶尔用到过,这里可以用来存储xml格式的文件,并且和其他资源文件一样,这里的资源是会被编译成二进制格式放到最终的安装包里的,我们也可以通过R类来访问这里的文件,并且解析 阅读全文
摘要:
一、私有文件夹下的文件存取(/data/data/包名)复制到剪贴板Java代码 1 import java.io.FileInputStream; 2 import java.io.FileOutputStream; 3 import org.apache.http.util.EncodingUtils; 4 5 public void writeFileData(String fileName,String message){ 6 try{ 7 FileOutputStream fout = openFileOutput(fileName, MO... 阅读全文
摘要:
1、颜色的定义:#Alpha-R-G-B;2、颜色资源XML文件的定义3、使用颜色资源1)新建一个Android2.2工程,命名为test;2)添加颜色资源XML,新建一个Android XML File:所有资源文件基本上都这样创建;然后:选择资源类型,这里我选择的是Values,当然还有其他可选项,资源类型列表列出了全部可创建的资源,用到了再选。然后:这是Android的资源编辑器界面,如果你进入的不是这样的界面,而是XML代码界面,你可以在color.xml文件上单击右键,open with下现则android资源编辑器。接下来当然是Add了:选择Color,OK;然后:Name处,输入 阅读全文
摘要:
资源是您在代码中使用到的并且在编译时被打包进您的应用程序的附加文件。Android支持多种不同的文件,包括XML、PNG和JPEG文件。XML文件的格式决定于其描述的内容。这些文件将描述文件支持的类型、语法或格式。处于加载效率的考虑,资源被从代码中分离出来,而且XML文件被编译进二进制代码中。字符串,类似的会被压缩存储为更经济的格式。处于这样或那样的原因,Android平台中会存在很多不同的资源和资源定义文件。这些文件包括以下部分:资源o 创建资源o 使用资源§ 在代码中使用资源§ 引用资源§ 引用主体属性§ 使用系统属性o 更改资源o 资源引用o 术语 阅读全文
摘要:
getResources。[java] view plaincopyprint?Drawable currentIcon = null; ……………… currentIcon = getResources().getDrawable(R.drawable.folder); ……………… currentIcon = getResources().getDrawable(R.drawable.image); ………… 一开始不是很理解为什么用c getResources()这个方法就可以获取存在系统的资源。于是看了一下文档和翻阅了一下资料:例如:把资源文件放到应用... 阅读全文
摘要:
1.设置桌面背景图片的方法 Resources res=getResources(); BitmapDrawable bmpDraw=(BitmapDrawable)res.getDrawable(R.drawable.icon); Bitmap bmp=bmpDraw.getBitmap(); try{ setWallpaper(bmp); }catch(IOException e) { e.printStackTrace(); }2.在manifest中增加设置桌面的权限 <uses-permission android:name="and... 阅读全文
摘要:
有的时候我们需要每隔一段时间去执行某个任务,在Java中提供了Timer and TimerTask来完成这个任务,本文提供一个应用程序的源代码告诉你如何使用这两个类。Timer和TimerTask的方法很少,使用起来也非常方便。希望如果遇到问题参考一下API doc,里面写的很清楚。TimerTask是个抽象类,他扩展了Object并实现了Runnable接口,因此你必须在自己的Task中实现public void run()方法。这也就是我们需要执行的具体任务。Timer实际上是用来控制Task的,他提供的主要方法是重载的schedule()方法。我们这里将使用schedule(Timer 阅读全文
摘要:
这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子:importjava.io.IOException;importjava.util.Timer;publicclassTimerTest...{publicstaticvoidmain(String[]args)...{Timertimer=newTime 阅读全文
摘要:
为什么要用Handler?子线程不能更改主线程的UI一般来说,所有显示在界面上的控件,都是由主线程创建的每个主线程都有一个Handler,Handler运行在主线程里,它与了线程可以通过Message对象来传递数据Handler原理 主线程里都维护了一个消息对列(message queue),子线程通过Message实例设置消息内容,通过主线程里的Handler实例把消息发送到消息队列(message queue),在主线程里还有一个轮循器(looper)在检查消息对列里有没有新的消息,一旦发现有新的消息,looper就会交给Handler对象处理,Handler则调用自己的回调函数Hand. 阅读全文
摘要:
import java.io.*; public class IOStreamDemo { public void samples() throws IOException { //1. 这是从键盘读入一行数据,返回的是一个字符串 BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter a line:"); System.out.println(stdin.readLine()); //2. 这是从文件中逐行读入数据 Buffere 阅读全文