android框架中遇到的问题,多线程和资源拷贝

在搭android的框架的时候,由于需要先把游戏的资源从apk包里考出来到sd卡上,

考虑再起一个线程专门处理拷贝和之后的更新,在拷贝过程中,发现asset目录下的资源,没有接口可以判断是文件,还是目录

所以只能通过判断文件名的方式,如果其中有'.'就认为是文件。

 

拷贝结束后,就需要初始化游戏引擎了,由于android上gl有一个专门的thread处理,所以,初始化引擎的工作,和渲染的工作都必须放到那个线程里去做

 

这样就涉及到线程同步的问题。

拷贝完成的时候的通信 Copythread---->MainThread---->GLThread

初始化完成 GLThread---> MainThread  (隐藏到loadingview)

 

子线程往主线程发消息,自定义一个Activity的Handler,

               Message msg = new Message();
               msg.what = EchoesHandler.HANDLER_COPY_COMPLETE;
               msg.obj = new EchoesHandler.CopyComplete();

      mHandler.sendMessage(msg);

然后再自定义的Handler里public void handleMessage(Message msg)

 

主线程往GL线程发消息,主要是GLSurfaceView通过  

  this.queueEvent(new Runnable() {
   @Override
   public void run() {
    // 做GL线程相关的事情
   }
  });

 

把需要处理的事件放到GLThread的队列里去。

 

 

posted @ 2014-06-04 09:49  被遗失De跳刀  阅读(387)  评论(0编辑  收藏  举报