为了活动小家电-Android主线程(一)

57 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

主线程的作用和特点

公共主线程

  • 在流程执行期间根据需要创建和执行线程。
  • 线程由已经在运行的其他线程创建和运行。
  • 在这种情况下,第一个线程称为主线程。创建和启动此线程的地方称为 main() 函数。
  • 也就是说,当一个进程启动时,main()函数中执行的第一个线程,也就是进程的起点,成为主线程。

安卓主线程

通过指定应用程序中包含的其中一个活动作为启动器,可以指定应用程序的起点,即应用程序进程的起点。在 AndroidManifest.xml 中编写的是指定启动器的部分

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test">

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

action节点中的 android.intent.action.MAIN 表明它所在的Activity是整个程序 开始运行时 的入口
category中的 android.intent.category.LAUNCHER 意思是把这个Activityg归属到加载器类,即把这个Activity标注为自动会加载和启动的Activity,这样程序启动时候就先加载这个Activity了

我知道如何像这样指定应用程序进程的起点,但您可能从未在开发 Android 时自己编写过 main() 函数。这是因为 Android 应用程序的 main() 存在于 Android 框架中。基本上,我们开发的 Android 应用程序都运行在 Android 框架上。

image.png

换句话说,main() 位于 Android 框架中,而不是在我们的代码范围内。更准确地说,执行位于 android.app.ActivityThread 类中的 main() 函数并启动应用进程。在这个 main() 函数中,准备并执行了主线程。主线程执行后,指定为启动器的活动(UI任务)被执行。

总结

Android 的主线程基本上负责组件生命周期方法和其中的方法调用。因此,UI 工作也包含在 Android 主线程的主要任务中。这里最大的特点是当 Android 主线程做 UI 工作时应用单线程模型。

为了活动小家电,下篇继续搞。