转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay
从上一篇学习中,学习了多媒体技术中的怎么去用josup加载一个网页并解析html标签的用法,今天就接着前篇 【安卓TV开发(七) 移动智能终端多媒体之在线解析网页视频源】 的学习。同时也了解下避免安卓内存溢出解决方式和安卓常用的几种UI更新的方式。
一 准备异步加载工具
1 新建 VideoLoaderTask 用来获取视频列表
/**
* Represents an asynchronous loaderVideoInfos task used to authenticate the
* user.
*/
public class VideoLoaderTask extends
AsyncTask<TvModle, String, List<TvTaiModel>> {
@SuppressWarnings("unchecked")
@Override
protected List<TvTaiModel> doInBackground(TvModle... params) {
// TODO Auto-generated method stub
return lists = DataVideoManager.getData(params[0]);
}
@Override
protected void onPostExecute(final List<TvTaiModel> resList) {
mAuthTask = null;
showProgress(false);
if (resList != null && resList.size() > 0) {
// Log.e(TAG ,success +"--");
adapter = new VideoWallAdapter(VideoInfoActivity.this, 0,
resList, mPhotoWall);
mPhotoWall.setAdapter(adapter);
adapter.notifyDataSetChanged();
} else {
Toast.makeText(VideoInfoActivity.this, "失败", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
此类设计到安卓AsyncTask的用法,需要大家了解此Api,具体原理是利用Thead+ handler机制实现,实际开发中我们更新UI也可以用安卓自带的UI线程runOnUiThread 代码可以如下,具体执行动作在run()实现,不管是用哪种
的方式更新UI,必须注意的是主线程不能执行网络耗时操作任务,容易出现ANR,(安卓4.0rom以后 主线程直接不能访问网络)。UI也必须由主线程来更新,子线程无UI操作权限。
1) 利用UI线程
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});
2 ) 利用handler发送Message