android基础(1)

/**以下内容主要来源于android-sdk-windows/docs**/

进程和线程
    android的UI是非线程安全的,所以不能在工作线程中访问UI对象,两个简单的原则:
1.不要阻塞UI线程
2.不要在除UI线程外的线程中直接访问UI对象

在工作线程中访问UI对象的方法:


例子:
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
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);  
    }  
}  
  
//在工作线程中调用  
new DownloadImageTask().execute("http://example.com/image.png"); 


在services和content provider中的方法通常要线程安全

你可能感兴趣的:(android)