UIView = Activity ?
记得两年前,刚到公司的时候,做过一些技术分享会,其中就有android和iOS的对比,但当时完全两端程序各说各的,虽然放在表格里面对比,就好像汪星人教喵星人游泳或者喵星人教汪星人爬树一样。
程序入口:
iOS:
iOS启动程序入口只有一个,即UIApplicationMain
, 然后通过代理将重要APP声明周期事件交给开发者处理(iOS程序的好处是可读性强,你读程序大概能猜出来它是干什么的):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 若程序没启动,这绝对是唯一入口,这里会有一个UIWindow return YES;}- (void)applicationWillResignActive:(UIApplication *)application {}- (void)applicationDidEnterBackground:(UIApplication *)application {}- (void)applicationWillEnterForeground:(UIApplication *)application {}- (void)applicationDidBecomeActive:(UIApplication *)application {}- (void)applicationWillTerminate:(UIApplication *)application {}
android:
android启动程序入口有多个,包含activity, service, content providers, broadcast receivers共四种component
activity 类似UIWindow
, 提供一个交互界面。
只要在__AndroidManifest.xml__声明,android系统可以从任意一个acitivity启动该程序, 直接到达所想要的界面, 使已有的Activity像自己应用的一部分,没有明显的程序跳转。类似的iOS只有一个activity, 需要activity内部组织, 来展现出想要的界面, 有明显的程序跳转。
__service__可以使程序长时间后台运行,相反iOS严格限制后台运行,只能允许声音,导航,画中画, airplay, 视频聊天等长时间后台运行,剩下的下载,更新什么的只允许应用后台更新10几分钟左右
__Broadcast receivers__接受系统消息或其它应用发出的消息,iOS可用NSNotification
接受系统消息,但是无法接受其它应用发出的任何消息
__Content providers__内容提供,iOS只能利用__Document Provider__可以完成其功能,插件相当于android里的component入口了,但是插件种类有限。
PS: 初学android欢迎指出其中不足