Android 进程和资源管理
Android Process and Resource managment
据我所知,在 Android 应用程序启动时,Os 将新进程分配给应用程序,应用程序将 运行 在该进程的 UIThread(mainthead)中运行。
所以在 Activity Class 下定义的操作将在 Ui 线程上 运行 (如果我们不会为任何操作创建单独的 class )。如果我们执行长 运行ning 进程,我们将在服务 class 下完成该任务(服务是 运行ning 甚至应用程序会终止)..所以服务是 运行ning在 UiThread 或单独的 Thead 上?如果它 运行s 在 Ui 线程下那么为什么它不影响 Ui 或者如果它 运行s 在单独的线程下那么为什么我们要创建另一个单独的线程服务长时间 运行ning 操作?
服务在 UI 线程上运行。它还可以通过某种方式与 UI 交互。
这是一篇很好的入门文章。
http://developer.android.com/guide/components/services.html
In Android when Application is start , Os assign new process to app
正确。
app will running in that UIThread (mainthead) of that process
不正确。 "app" 不会在任何线程上 运行。 Java 个对象的方法在线程上被调用。
so operation which is define under Activity Class will run on UiThread
不正确。 Java class 不会在任何线程上 运行。 Java 对象的方法在线程上调用。因此,activity 的方法将在线程上调用。其中一些方法将在 Android 应用程序进程的主应用程序线程(a.k.a., UI 线程)上调用。
So Service is running on UiThread or separate Thead?
两者都不是,或两者兼而有之,取决于你想如何看待它。同样,Java class 不会在任何线程上 运行。 Java 对象的方法在线程上调用。服务的生命周期方法(例如,onCreate()
、onStartCommand()
、onDestroy()
)在主应用程序线程上调用。在后台线程上调用 IntentService
的 onHandleIntent()
。
if it runs under UiThread then Why it is not affect to Ui
您在主应用程序线程上花费的任何时间都将冻结 UI。代码是 activity 上的方法、服务上的方法还是其他东西上的方法都没有关系。
if it runs under separate Thread then why we are creating another separate thread in service for long running operations?
避免占用主应用程序线程从而冻结 UI。
据我所知,在 Android 应用程序启动时,Os 将新进程分配给应用程序,应用程序将 运行 在该进程的 UIThread(mainthead)中运行。 所以在 Activity Class 下定义的操作将在 Ui 线程上 运行 (如果我们不会为任何操作创建单独的 class )。如果我们执行长 运行ning 进程,我们将在服务 class 下完成该任务(服务是 运行ning 甚至应用程序会终止)..所以服务是 运行ning在 UiThread 或单独的 Thead 上?如果它 运行s 在 Ui 线程下那么为什么它不影响 Ui 或者如果它 运行s 在单独的线程下那么为什么我们要创建另一个单独的线程服务长时间 运行ning 操作?
服务在 UI 线程上运行。它还可以通过某种方式与 UI 交互。 这是一篇很好的入门文章。 http://developer.android.com/guide/components/services.html
In Android when Application is start , Os assign new process to app
正确。
app will running in that UIThread (mainthead) of that process
不正确。 "app" 不会在任何线程上 运行。 Java 个对象的方法在线程上被调用。
so operation which is define under Activity Class will run on UiThread
不正确。 Java class 不会在任何线程上 运行。 Java 对象的方法在线程上调用。因此,activity 的方法将在线程上调用。其中一些方法将在 Android 应用程序进程的主应用程序线程(a.k.a., UI 线程)上调用。
So Service is running on UiThread or separate Thead?
两者都不是,或两者兼而有之,取决于你想如何看待它。同样,Java class 不会在任何线程上 运行。 Java 对象的方法在线程上调用。服务的生命周期方法(例如,onCreate()
、onStartCommand()
、onDestroy()
)在主应用程序线程上调用。在后台线程上调用 IntentService
的 onHandleIntent()
。
if it runs under UiThread then Why it is not affect to Ui
您在主应用程序线程上花费的任何时间都将冻结 UI。代码是 activity 上的方法、服务上的方法还是其他东西上的方法都没有关系。
if it runs under separate Thread then why we are creating another separate thread in service for long running operations?
避免占用主应用程序线程从而冻结 UI。