UIView = Activity ?

记得两年前,刚到公司的时候,做过一些技术分享会,其中就有android和iOS的对比,但当时完全两端程序各说各的,虽然放在表格里面对比,就好像汪星人教喵星人游泳或者喵星人教汪星人爬树一样。

iOS vs android.jpg

程序入口:

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MyActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

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欢迎指出其中不足


天才小飞猫
320 声望16 粉丝