摘要:
可能是出于性能的考虑,Android的UI操作是非线程安全的。也就是说,如果你在一个新开的线程中直接操作UI是会引发异常的。但是,Android又规定,不要去阻塞UI线程!否则,轻者引起程序卡顿,重者直接引发臭名昭著的“ANR”异常。为了解决这一种矛盾,Android引入了Handler来解决这个问题。Handler有两种常见的用法:第一种是“发送信息”,我们可以将我们要改变的参数通过Message发送给指定的Handler,然后在Handler中的handleMessage方法中进行处理。另一种是将一个runnable对象“post”给Handler对象去执行。实际上,这两种方法是没有太本质 阅读全文
摘要:
最近在配置BroadcastReceiver的时候,发现一条警告,如下图:百度了一下,网上的答案基本都是说把receiver标签的exported属性改为false。这样做确实是可以去掉警告,但是会引起的一个问题就是这个广播不能被其他应用程序所使用。官方文档是这样写的:Flag indicating whether the given application component is available to other applications.虽然说这只是一个警告,但本人的强迫症作祟,看着实在难受~~~于是果断查看帮助文档。终于,还是找到了问题的根本原因。http://developer. 阅读全文
摘要:
计算机解决问题的步骤:从具体问题抽象出数学模型设计一个求解此数学模型的算法编写程序,进行测试、调度,直到解决问题数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。数据(Data):是客观事物的符号表示,是所有能输入到计算机并被计算机程序处理的符号的总称。数据元素(Data Element):是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。(有时也被称为元素、结点、记录等)数据项(Data Item):是组成数据元素的、有独立含义的、不可分割的最小单位。数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。数 阅读全文
摘要:
这是一道竞赛的题目,如下:在编写图形界面软件的时候,经常会遇到处理两个矩形的关系。如图【1.jpg】所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看【2.jpg】)。两个矩形的并集指的是:能包含这两个矩形的最小矩形,它一定是存在的。 本题目的要求就是:由用户输入两个矩形的坐标,程序输出它们的交集和并集矩形。矩形坐标的输入格式是输入两个对角点坐标,注意,不保证是哪个对角,也不保证顺序(你可以体会一下,在桌面上拖动鼠标拉矩形,4个方向都可以的)。 输入数据格式:x1,y1,x2,y2x1,y1,x2,y2 数据共两行,每行表示一个矩形。每行是两个点的坐标。... 阅读全文
摘要:
整数分割问题是这样的:将一个正整数分割成一系列整数的和。如:5 = 4 + 15 = 3 + 25 = 3 + 1 + 15 = 2 + 2 + 15 = 2 + 1 + 1 + 15 = 1 + 1 + 1 + 1 + 1数字顺序不重要,但不能出现重复,比如5 = 2 + 2 + 1和5 = 2 + 1 + 2就是不能重复出现的。之前想了很多方法,总是存在重复的项。有一个比较“笨”的方法就是用一个HashSet来保存,但总感觉不是很满意。今天上课时,突然想到一个比较满意的方法,用Java实现如下: 1 public class SplitNum { 2 public static v... 阅读全文
摘要:
今天有同学拿一段代码给我看,问我这段代码会编译生成几个类文件: 1 public class OuterClass { 2 3 public static void main(String[] args) { 4 5 new InnerClass().said(); 6 7 } 8 9 10 11 private static class InnerClass {12 13 public void said() {14 15 System.out.println("Hello");16 17 ... 阅读全文
摘要:
做应用保存一些数据是在所难免的啦。Android提供了五种保存数据的方式:Shared PreferenceInernal StorageExternal StorageSQLite DatabasesNetwork Connection来看看他们各自适合什么情况:<1>Shared Preferences: 这个最容易使用,但只能保存原生数据类型的数据(这样说不是很严谨,因为可以通过Base64编码的方式保存对象之类的东西,但很少会人这样做吧~~~)。本质上保存的是把键值对(key-value pairs)在xml文件里。什么是键值对?百度去~~~<2>Inernal 阅读全文
摘要:
目录:1. Android系统结构2. Android的"四大天王"3. 必需面对的问题<1>Android系统架构: 上面那张图显示了Android系统的整体结构。从下到上来分成了四层:第一层Linux Kernel(Linux内核层): Android的底层其实就是Linux!这一层主要是与系统打交道的,负责管理各个硬件的协调工作。第二层Libraries和Android Runtime(各种库与Android运行时): Android的大部分App是用Java开发的,Google自己提供了一个Java虚拟机的实现——Dalvik VM,我们写的大部分App 阅读全文
摘要:
Activity的生命周期每个学习安卓的同桌应该都知道Activity是拥有自己的生命周期的。算起来这也是一个老生常谈的问题了。很多时候我们根本就没有体会这到底有什么作用,但实际上,了解Activity的生命可以让我们更好的理解页面切换、任务这些行为下发生的过程,开发出更加健壮的应用。这张图片是官方文档给出的,概括起来就一句话:当你要用一个Activity时,它的状态会一直上升直到Resumed,而当Activity不再使用时,它的状态就会不断的下降直到Destroy。这样讲还是很抽象,来看一个demo。这个demo包括一个MainActivity、一个AnotherActivity和一个Di 阅读全文
摘要:
“By default, all components of the same application run in the same process and thread (called the "main" thread).” 在通常的情况下,android应用程序都是运行在单一进程与线程之中的。这个线程就是“main”线程,也常被称为”UI线程”。 但是很多情况下我们的应用都可能会执行一些比较耗时的操作,例如获取一个网络的资源、一个文件的传输。如果我们把这些操作放在主线程。就会使线程阻塞(block),如果长时间的阻塞,我们还会看到臭名昭著的“应用程序失去响应”的对话 阅读全文