超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2015-08-17

Unity3D项目实战笔记(3):Android系统的AndroidManifest.xml && Activity 6 mins read


在接入Android SDK的时候,了解了Android多线程后, 我们来了解一下AndroidManifest.xml 和Activitiy.

在Android开发中,无main函数,这个让C\C++\C#程序员不太适应,但是Android提供了Main的入口的,这个就是配置AndroidManifest.xml。

 

  • AndroidManifest.xml

    权威的AndroidManifest.xml请直接看Google官方文档,非常详细和及时。

 

其中在开发Android SDk接入,需要配置 android:configChanges--keyboard|keyboardHidden|screenSize|orientation。 即当屏幕翻转等变化后,Activity不会“死掉”,会调用Activity.onConfigurationChanged() 方法.

另外,jar包中的activity,都是需要在AndroidManifest.xml声明的。

其中这个属性比较重要  android:launchMode(Activity加载模式)

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式

Activity有四种加载模式:

  • standard (默认)
  • singleTop
  • singleTask
  • singleInstance

standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity。

singleTop:也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于栈顶时(配置成singleTop的Activity),不会构造新的实例

singleTask:和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。

singleInstance:

首先说明一下task这个概念,Task可以认为是一个栈,可放入多个Activity。比如启动一个应用,那么Android就创建了一个Task,然后启动这个应用的入口Activity,那在它的界面上调用其他的Activity也只是在这个task里面。

  • Activity

    Activity概念,可以简述为用户可见的一个大视图的主布局框架,在Android中,每次只能看到一个Activity,两个Activity切换会采用Task任务栈方式调度。
    Activity的生命周期
    奇怪的是Android屏幕旋转,也是需要销毁Activity的,故需要预先存储、加载数据的。
    为了实现outlook左右布局,左侧导航+右侧切换视图效果,需要用到FrageMentActivity子类。
      最后,在Activity之间通信,有2种办法:
      显示Intent

    //显示方式声明Intent,直接启动SecondActivity

    Intent it = new Intent(MainActivity.this,SecondActivity.class);

    //启动Activity

    startActivity(it);

      隐式Intent

    // 实例化Intent

    Intent it = new Intent();

    //设置Intent的Action属性

    it.setAction("com.android.activity.MY_ACTION");

    // 启动Activity

    startActivity(it);

    隐式Intent之所以设置Action后,即可找到可能的Activity,是因为Activity的intent-filter属性对外公开了其可以处理的Action。如系统默认的拨打电话、播放音乐等Activity等。

    2015-08-17
    老王 加冕为王
    老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
    友情链接
    超牛链 57天前 2024年3月6日 15:16

    老朋友们又来了,一起共享这片天地

    超牛链 57天前 2024年3月6日 15:16

    今天的沙发只给老朋友们,等你一起分享

    最新文章

    超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

    算力为王时代: CPU --> GPU

    GPU这...
    【发刊词】超牛链AI: hello world.

    ​公元2024年,比2023年的AI风暴,更加寒噤。

    《一句顶一万句》 遇见一个能说的上话的人不易

    2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

    2023个人总结: AI、骑行、青椒炒肉丝

    后疫情时代,刚褪去口罩。又迎来经济消费降级,我的客户同...

    热门文章

    C#程序员整理的Unity 3D笔记(六):Git源码管理

    对程序员而言,写的代码用源码管理系统管理起来,非常方便...

    且行且思:记录一次西安城墙国际马拉松---8公里

    百度搜索,输入西安城墙马拉松,有7万2千个结果。 实际...

    骑行故事初心--自由的御风而行

    2023年,三年疫情过后第一个春天,我开始了骑行: 空...

    Unity3D for VR 学习(7): 360°全景照片

        在VR应用中,有一个相对简单的虚拟现实体验,那...

    相关【技术杂谈】文章

    查看所有相关【技术杂谈】文章
    搭建Squid3 密码账号IP代理

    上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

    不用插件,js脚本显示星号密码

    不用插件,js脚本显示星号密码

    以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

    执行MySQL报错

    今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...