开始


将unity项目和android进行融合(具体步骤:http://blog.csdn.net/zx1091515459/article/details/78840379)


方法一:


设置


创建一个所有界面都继承的类:BaseActivity

package com.idcard.act;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.view.KeyEvent;public class BaseActivity extends Activity  {/**      * 关闭Activity的广播,放在自定义的基类中,让其他的Activity继承这个Activity就行      */  BroadcastReceiver finshapp=new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent) {  finish();}};@Overrideprotected void onResume() {super.onResume();IntentFilter intentFilter=new IntentFilter();intentFilter.addAction("exitapp");this.registerReceiver(this.finshapp, intentFilter);};@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();this.unregisterReceiver(this.finshapp);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubreturn super.onKeyDown(keyCode, event);}}


主界面继承BaseActivity,然后在主界面内添加


 @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){            if((System.currentTimeMillis()-currenttime) > 2000){                Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();                currenttime = System.currentTimeMillis();            } else {                exitApp();            }            return true;        }        return super.onKeyDown(keyCode, event);    }    private void exitApp() {        Intent intent=new Intent();        intent.setAction("exitapp");        this.sendBroadcast(intent);    }

由于UnityPlayer Activity无法继承BaseActivity,所以改为如下

public class XXX extends UnityPlayerActivity {    /**     * 关闭Activity的广播,放在自定义的基类中,让其他的Activity继承这个Activity就行     */    BroadcastReceiver finshapp=new BroadcastReceiver(){        @Override        public void onReceive(Context context, Intent intent) {            finish();        }    };    @Override     protected void onCreate(Bundle savedInstanceState) {}}





方法二:


设置


  • 将unity界面(UnityPlayerActivity)在AndroidManifest中设置为全局单例模式(singleInstance:全局单例模式



  • 使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
  • MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作

import java.util.LinkedList;import java.util.List;import android.app.Activity;import android.app.Application;public class MyApplication extends Application {    private List activitys = null;    private static MyApplication instance;    private MyApplication() {        activitys = new LinkedList();    }    /**     * 单例模式中获取唯一的MyApplication实例     *     * @return     */    public static MyApplication getInstance() {        if (null == instance) {            instance = new MyApplication();        }        return instance;    }    // 添加Activity到容器中    public void addActivity(Activity activity) {        if (activitys != null && activitys.size() > 0) {            if(!activitys.contains(activity)){                activitys.add(activity);            }        }else{            activitys.add(activity);        }    }    // 遍历所有Activity并finish    public void exit() {        if (activitys != null && activitys.size() > 0) {            for (Activity activity : activitys ) {                activity.finish();            }        }        System.exit(0);    }}


  • 在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this); 

  • 在需要结束所有Activity的时候调用exit方法

MyApplication.getInstance().exit();



后记
其实一般是用第一种,因为如果是经常开发安卓的同学都能看出来,第一种方法在没有unity插件加入的app中也十分常用,而且使用十分方便,只是在UnityPlayerActivity里单独把广播的内容又写了一遍而已

        
        
        
        


更多相关文章

  1. Fragment 在Android(安卓)SDK1.6上实现
  2. android 应用程序全屏(没有状态栏和标题栏)
  3. android 锁屏界面处理
  4. Android(安卓)Recovery模式
  5. Activity的启动模式(android:launchMode)
  6. android用户界面-组件Widget-画廊视图Gallery
  7. android实战
  8. Android(安卓)登录界面调用输入法时让界面自动上移,使输入法不会
  9. Android(安卓)Activity界面切换添加动画特效

随机推荐

  1. SQL Server 作业同步 (结合备份作业)
  2. SQLServer中用T—SQL命令查询一个数据库
  3. SQL Server 作业的备份(备份作业非备份数
  4. SQL Server 复制需要有实际的服务器名称
  5. 数据库复制性能测试 推送模式性能测试
  6. SQLServer 2005 实现数据库同步备份 过程
  7. 教你怎么使用sql游标实例分享
  8. sql语句查询数据库中的表名/列名/主键/自
  9. 分享整理的12条sql语句连同数据
  10. Android(安卓)背景图片重复平铺