最近忙着整论文、教育实习打游戏啥的一直没有写代码啦,好多以前花时间去理解的东西都忘完了。还是觉得以后研究差不多的东西应该写篇博客等以后忘记的时候可以回顾下。(向医生、师傅、郭神这些大神致敬)。
下面讲下对这2个东西的简单理解吧,作为菜鸟在潜意识里面的理解就是启动主activity,切!不管三七二十一直接往主activity里面copy不就得了,但是这样是进不了bat的。。说的好像理解了就能进bat似得,请原谅我的无缘无故装X。。。。。
做个简单的测试 (Demo里面只有一个MainActivity)
Test1:
在MainActivity里面添加了android.intent.action.MAIN,没有android.intent.category.LAUNCHER
Test2:
在MainActivity里面添加了android.intent.category.LAUNCHER,没有android.intent.action.MAIN
结果呢? 都是一样的如下图:
虽然都是Install成功,蛋是根本就没有启动这个程序(当然在桌面上也没有这个图标)。why?
下面是我个人理解:
android.intent.action.MAIN决定该Activity是否是整个应用程序的入口Activity
android.intent.category.LAUNCHER只是决定是否显示在应用程序列表里面
Test1里面么有注册launcher 就不能在桌面上显示图标(但是为啥程序未执行还请没进bat的大神指点下。)
Test2里面只是注册了launcher,蛋是没有注明Mainactivity是Demo(应用程序)的入口activity,所以自然无法启动咯(自然也不会显示图标啦)
----------------------------------------------这只是测试两者不兼存时的情况
</pre><p></p><p>那么如果我在mainfest里面同时有多个activity都注册了这2个东东会是啥情况哇?(这里就以2个为例,再多都一个道理)</p><p>先贴上manifest的代码:</p><p> </p><pre name="code" class="html"><activity android:name="xx.MainActivity"
android:label="冠希01"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="xx.MainBActivity"
android:label="冠希02"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
一运行程序,卧槽把我介个菜鸡吓尿了。竟然粗现了2个冠希,又特么多了一个男神,这让别的男人怎么活,好吧请继续原谅我扯犊子式的double装X。
我喜欢搞破坏,于是我就带着疑问进行了几个测试:
Test1:点击桌面图标的冠希01,然后回到后台再去点击冠希02图标,发现打开的还是冠希01里的界面;同理我先打开冠希02再去点击冠希01发现打开的是冠希02的界面。
Test2:去掉了冠希01里面的categoty,发现在桌面上只有冠希02啦,这才正常嘛男神只能有一个。同理冠希02也是同样现象。
于是乎我又总结下自己的理解:当有多个Activity同时声明这两个标识时 ,表示的意思是 : 在桌面上可以出现多个图标 而点击哪个图标 表明那个Activity已经作为整个
程序的默认入口,再次点击其他图标时 启动的还是当前已经被激活的activty! 而eclipse启动应用程序默认启动的是在manifest里面声明的第一个Activity(自上而下)。
当然说了只是说下自己的理解,希望不理解的童鞋们最好自己动手练习下!我的只是简单的理解说的不对的地方希望大神们指正哇共同学习。
曾经有个男人的话一直留在了我的心里也影响了我之后的android学习,他说:
再见!