二分查找的前提是所查找的数组已经有序。在查找过程中,
每次取出中间的元素,与目标数值比较,若相等则直接返回;
若不等,则根据排序规则在一侧中继续查找,直到这一侧元素仅剩一个时,
若与目标元素相等,则直接返回;否则表明数组中没有待查找元素。
Java线程中的wait(),notify()与sleep()
在Java中可以通过wait()与notify()或notifyAll()实现线程协作。简要总结有如下几点:
1.wait()让线程进入等待状态,并释放锁(而sleep等待的同时并不释放锁)
2.notify()通知wait的线程尝试获取对象锁,在此线程任务执行完后,wait的线程就会重新获得锁,继续运行。
3.wait与notify均是Object的方法,调用这两个方法需要在synchronized代码块或函数中执行,否则会抛出异常。
Android中使用加速度传感器
在Android中使用加速度传感器可以帮助我们识别手机的姿态及运动状态。
使用加速度传感器与其他传感器的方法大致相同,通过调用系统API就可以实现。分为以下几步:
- 获取SensorManager
- 使用SensorManager获取加速度传感器
- 创建自定义的传感器监听函数,并注册
- 相对应的,在合适位置实现注销监听器的调用
okhttp异常: java.lang.IllegalStateException: closed
1 | 09-05 14:42:17.606: E/AndroidRuntime(28219): Caused by: java.lang.IllegalStateException: closed |
这个错误是由于response.body().string()
调用了多次导致的,string()
仅可调用一次。
ListView中的局部刷新
在列表中显示多个下载进度条是一个很常见的需求了,
这个需求主要涉及到以下两个技术点:
1.Handler异步更新UI
2.ListView进行局部更新
今天来看一下这一功能最简单的实现——模仿多个APP下载更新进度条。
为了让代码简单一些,在这里使用了ListView显示列表,直接使用线程控制进度更新。
iOS中异步回调的单元测试方法
在XCode6以上版本中,苹果添加了用于异步回调测试的api,因此不用像旧版本那样,发起异步调用后通过循环查询标志位,来检查异步回调函数的调用了。
在新版本中直接使用XCTestExpectation
的API即可实现这一功能。
Android中的IPC——AIDL方式
AIDL是实现Android中IPC的一种方式。
通过AIDL我们将各种通信操作以接口方式进行定义,Android SDK则会按照AIDL的规则将AIDL编码成java类嵌入到应用中,然后我们就可以在APP运行时以调用函数的形式来进行IPC了。