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的队列里去。

 

 

转载于:https://www.cnblogs.com/bysdtd/p/3767223.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值