WEB开发网
开发学院手机开发Android 开发 Android线程模型(Painless Threading) 阅读

Android线程模型(Painless Threading)

 2010-09-10 00:38:00 来源:WEB开发网   
核心提示:quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getf
quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14">

public void onClick( View v ) {

new Thread( new Runnable() {

public void run() {

final Bitmap b = loadImageFromNetwork();

mImageView.post( new Runnable() {

mImageView.setImageBitmap( b );

});

}

}).start();

}

public void onClick( View v ) {

new Thread( new Runnable() {

public void run() {

final Bitmap b = loadImageFromNetwork();

mImageView.post( new Runnable() {

mImageView.setImageBitmap( b );

});

}

}).start();

}

很不幸的是这些类或方法同样会使你的代码很复杂很难理解。然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕。为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。

Android 1.0和1.1中具有与AsyncTask相同功能的类UserTask。它提供了完全一样的API,你需要做的只是把它的代码拷贝的你的程序中。

AsyncTask的目标是替你管理你的线程。前面的代码可以很容易地使用AsyncTask重写。

Java代码 < src="http://android.group.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mce_src="http://android.group.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=public%20void%20onClick(%20View%20v%20)%20%7B%0A%20%20%20%20%20new%20DownloadImageTask().execute(%20%22http%3A%2F%2Fexample.com%2Fimage.png%22%20)%3B%0A%7D%0A%0Aprivate%20class%20DownloadImageTask%20extends%20AsyncTask%20%7B%0A%20%20%20%20%20protected%20Bitmap%20doInBackground(%20String...%20urls%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20loadImageFormNetwork(%20urls%5B0%5D%20)%3B%0A%20%20%20%20%20%7D%0A%0A%20%20%20%20%20protected%20void%20onPostExecute(%20Bitmap%20result%20)%20%7B%0A%20%20%20%20%20%20%20%20%20mImageView.setImageBitmap(%20result%20)%3B%0A%20%20%20%20%20%7D%0A%7D"

上一页  1 2 3 4  下一页

Tags:Android 线程 模型

编辑录入:coldstar [复制链接] [打 印]
赞助商链接