1、数据在两个线程里面运行,如何避免冲突,在Touch Listener里面和在draw里面
http://blog.csdn.net/zhikun518/article/details/7526298
http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
为什么会出现这样的问题?这就是多线程中的同步的问题。在我们的程序中,Account中的amount会同时被多个线程所访问,这就是一个竞争资源,通常称作竞态条件。对于这样的多个线程共享的资源我们必须进行同步,以避免一个线程的改动被另一个线程所覆盖。在我们这个程序中,Account中的amount是一个竞态条件,所以所有对amount的修改访问都要进行同步,我们将deposit()和withdraw()方法进行同步,修改为:
(1)类是实例两个线程调用两个函数方法的时候:
public synchronized void deposit(float amt)
public synchronized void withdraw(float amt)
(2)多个类的实例在多个线程中运行保持静态变量的同步
private static Object lock=new Object();
public void printVal(int v)
{
synchronized(lock) {
while(true)
System.out.println(v);
}
}
2、SimpleOnGestureListener
(1)点击屏幕上的某项的执行流程 有两种情况,一种是时间很短,一种时间稍长
时间很短:onDown--------》onSingleTapUp--------》onSingleTapConfirmed
时间稍长:onDown--------》onShowPress------》onSingleTapUp--------》onSingleTapConfirmed
(2)长按事件
onDown--------》onShowPress------》onLongPress
(3)抛:手指触动屏幕后,稍微滑动后立即松开
onDown-----》onScroll----》onScroll----》onScroll----》………----->onFling
(4)拖动
onDown------》onScroll----》onScroll------》onFiling
注意:有的时候会触发onFiling,但是有的时候不会触发,个人理解是人的动作不标准所致。
3、bitmap回收 http://hi.baidu.com/huazai30000/item/3675d7a909f3e2971510731a
第一种方法--及时回收bitmap内存:
一般而言,回收bitmap内存可以用到以下代码
if(bitmap != null && !bitmap.isRecycled()){
bitmap.recycle();
bitmap = null;
}
System.gc();
在纹理里面,将Rsource转化为纹理之后,bmp就没有用了,需要回收
4、中英文在java中占得字节数,中文英文在java中的char是两个字节的,在C++是一个字节的,对于string,在java中每个字符是两个字节的,所以"我"ength是返回1的,C++中string("我")是分两个位置存储的,str[0]显示不出"我"