android OpenGl 游戏编写过程

来源:互联网 发布:网络接入设备 编辑:程序博客网 时间:2024/05/16 09:03

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]显示不出"我"

原创粉丝点击