首先,我們可以檢查這些類的定義。
可運行是一個接口,定義如下:
package java.lang;
public interface Runnable {
void run();
}
線程是一個類實現Runnable接口,定義如下:
package java.lang;
public class Thread implements Runnable {
public Thread() {
throw new RuntimeException("Stub!");
}
}
所述的AsyncTask是一個抽象類,定義如下所示:
package android.os;
public abstract class AsyncTask<Params, Progress, Result> {
public final AsyncTask<Params, Progress, Result> execute(Params... params) {
throw new RuntimeException("Stub!");
}
}
正如你所說的,一個活動正在運行廣告,同時一個Runnable可能會或可能不會在同一個線程上運行,因爲它只是一個接口,只是一段代碼。
AsyncTask不在主線程上運行,它在非UI線程上運行,因此它可以在主線程上運行活動時執行一些並行作業。
在應用程序的生存時間控制下的所有對象(Activity,AsyncTask,Thread)。
幾乎 - 但應用程序與進程之間沒有1:1的對應關係。 –
我從來沒有聽說過運行多個進程而不是服務的應用程序。但很高興知道。 –