Processes and Threads
2016-08-01 16:13
351 查看
当application 第一次执行的时候,Android 系统会开始一个新的Linux 进程来执行application.application的所有组件都运行的同一个进程中,n你也可以让application的组件运行在不同的进程中.
Android的四大组件可以在manifest文件中通过Android:process 来指定组件运行在哪个进程中. <application> 也有Android:process 可以指定所以的组件运行在同一个进程中.当系统memory不足时,Android 系统会kill一些进程以回收内存。对用户越不重要的进程,越容易被kill掉.
1:Foreground process
2:Visible process
3:Service process
4:backgroud process
5:Empty process
当application开始运行时,系统会创建一个main thread(也就UI线程).不要block UI线程,不要再非UI线程中更新UI
当有操作可能block UI线程是,一般new thread运行,如下所示:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork("http://example.com/image.png");
mImageView.setImageBitmap(b);
}
}).start();
}
Android 提供三种方法从非UI线程中更新UI。
Activity.runOnUiThread(Runnable)
view.post(Runnable)
view.postDelayed(Runnable,long)
当然也可以用handle机制.
举例如下:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap =
loadImageFromNetwork("http://example.com/image.png");
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
AsyncTask 可以异步的执行,AsyncTask是一个虚类,必须实现其子类。需要重写doInBackground做耗时的工作,
在onPostExecure中更新UI.
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
Android的四大组件可以在manifest文件中通过Android:process 来指定组件运行在哪个进程中. <application> 也有Android:process 可以指定所以的组件运行在同一个进程中.当系统memory不足时,Android 系统会kill一些进程以回收内存。对用户越不重要的进程,越容易被kill掉.
1:Foreground process
2:Visible process
3:Service process
4:backgroud process
5:Empty process
当application开始运行时,系统会创建一个main thread(也就UI线程).不要block UI线程,不要再非UI线程中更新UI
当有操作可能block UI线程是,一般new thread运行,如下所示:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork("http://example.com/image.png");
mImageView.setImageBitmap(b);
}
}).start();
}
Android 提供三种方法从非UI线程中更新UI。
Activity.runOnUiThread(Runnable)
view.post(Runnable)
view.postDelayed(Runnable,long)
当然也可以用handle机制.
举例如下:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap =
loadImageFromNetwork("http://example.com/image.png");
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
AsyncTask 可以异步的执行,AsyncTask是一个虚类,必须实现其子类。需要重写doInBackground做耗时的工作,
在onPostExecure中更新UI.
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
相关文章推荐
- Android Guide Dev 之Processes and Threads
- The Java™ Tutorials — Concurrency :Processes and Threads 进程和线程
- Processes and Threads
- 【Android 官方文档】翻译Android官方文档 Processes and Threads(五)
- [译]Android应用程序基础 >> 进程和线程(Processes and Threads)
- Processes and Threads
- Java Processes and Threads 进程与线程
- Processes and Threads 进程和线程
- 进程和线程-Processes and Threads[译文]
- Processes and Threads --译-- androidSDK
- Processes and Threads
- The differences between processes and threads?
- LINUX AND THE MAXIMUM NUMBER OF PROCESSES (THREADS)
- Android开发者指南-进程和线程-Processes and Threads[原创译文]
- Managing Processes and Threads in Windows Forms
- processes, threads and signals in Linux
- Processes and Threads
- Processes and Threads
- (八)进程和线程(Processes and Threads)
- Android Developer - Processes and Threads