[error] net.tsz.afinal.finalbitmap$bitmaploadTask.executeOnExecutor

java.lang.NoSuchMethodError: net.tsz.afinal.finalbitmap$bitmaploadTask.executeOnExecutor

Android 3.0以后(〉SDK/API 11)的版本:

  • 新增接口#executeOnExecutor()如果你想让所有的任务都能并发同时运行,那就创建一个没有限制的线程池(Executors.newCachedThreadPool()),提供给AsyncTask。这样这个AsyncTask实例就有了自己的线程池而不必使用AsyncTask默认的。
  • #execute()提交的任务,按先后顺序每次只运行一个
  • 公开THREAD_POOL_EXECUTOR是一个corePoolSize为5的线程池,即最多只有5个线程同时运行,超过5个的就要等待。使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)就跟2.3版本的AsyncTask.execute()效果是一样的。

Android2.3(SDK/API 10)和以前的版本,同时只能有5个线程运行,超过的线程只能等待,等待前面的线程某个执行完了才被调度和运行。more here

从Android 3.0开始,对于AsyncTask有个额外的特色:在多核处理器的情况下,我们可以使executeOnExecutor() 来替代execute(),这样系统会根据当前设备的内核数量同时进行多个任务

Params:启动 task 时传入的参数, 如 new QAsyncTask().execute(Params), 这个输入参数是 task 执行过程中的调用函数 doInBackground(Params) 的输入参数,于是多线程传参变得无比简单。

afinal

Afinal简介

  • Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;
  • 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题。
  • Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。
  • 里面包含了四大功能:空间的id绑定和事件绑定功能网络图片的显示功能(里面包含了强大的缓存框架);数据库sqlite的操作功能http数据的读取功能(支持ajax方式读取);

目前Afinal主要有四大模块:

  • FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。
  • FinalActivity模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
  • FinalHttp模块:通过httpclient进行封装http数据请求,支持ajax方式加载。
  • FinalBitmap模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存管理使用lru算法没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器,在imageview显示图片的时候播放动画等(默认是渐变动画显示)。

FinalBitmap 使用方法

加载网络图片就一行代码 fb.display(imageView,url) ,更多的display重载请看帮助文档

private GridView gridView;
    private FinalBitmap fb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.images);
        gridView = (GridView) findViewById(R.id.gridView);
        gridView.setAdapter(mAdapter);
        fb = FinalBitmap.create(this);//初始化FinalBitmap模块
        fb.configLoadingImage(R.drawable.downloading);
        //这里可以进行其他十几项的配置,也可以不用配置,配置之后必须调用init()函数,才生效
        //fb.configBitmapLoadThreadSize(int size)
        //fb.configBitmapMaxHeight(bitmapHeight)
    }
///////////////////////////adapter getView////////////////////////////////////////////
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView iv;
    if(convertView == null){
        convertView = View.inflate(BitmapCacheActivity.this,R.layout.image_item, null);
        iv = (ImageView) convertView.findViewById(R.id.imageView);
        iv.setScaleType(ScaleType.CENTER_CROP);
        convertView.setTag(iv);
    }else{
        iv = (ImageView) convertView.getTag();
    }
    //bitmap加载就这一行代码,display还有其他重载,详情查看源码
    fb.display(iv,Images.imageUrls[position]);

使用afinal开源框架一行代码显示网络图片

public class DemoActivity extends FinalActivity {
@ViewInject(id=R.id.imageView) ImageView imageView; //无需findViewById
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//使用FinalBitmap组件 把网络图片显示到imageView上
new FinalBitmap(this).init().display(imageView, "http://www.devchina.com/static/image/k/logo.png");
}
}

从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单:仅是在doInBackground中用HTTP请求把图片的输入流取出,然后用BitmapFactory去解析,然后再把得到的Bitmap放到ImageView中

afinal的FinalDb操作android数据库

afinal 开发android应用程序demo

功能很简单,我们可以添加数据到数据库sqlite,然后从数据库中查询所有的数据到listview上显示,可以再listview修改和删除数据。完成基本的增删改查功能。

AsyncTask 的executeOnExecutor方法虽然改善了异步操作,但是它是从API 11+才开始出现的,因此在之前的版本如2.2 上的机器是不可以运行的。
之前的thread不会有这样的问题。为了方便用了afinal 的框架获取图片,那个确实要兼容一下

1.往下滚几页在再返回第一页,考前的几个图片好像没有加载,这样,已经加载过的图片没有重新加载,只有文字显示.
2.有些比较长的图片可能会出现在在上一页空白显示,但下拉到下一页就会正常显示。
360 03

直接使用LayoutParams的对象动态设置图片的高度和宽度:

ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setImageResource(R.drawable.newscar);
LayoutParams params = imageView.getLayoutParams();
params.height=200;
params.width =100;
imageView.setLayoutParams(params);

@android:color
color.xml里面定义颜色:

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<drawable name=”darkgray”>#808080FF</drawable>
<drawable name=”white”>#FFFFFFFF</drawable>
<drawable name=”bule”>#0000FF</drawable>
</resources>

<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”百度:http://www.baidu.com”
android:textColor=”@drawable/darkgray”
android:background=”@drawable/white”
android:layout_x=”10px”
android:layout_y=”200px”
/>

让ImageView的图片全屏填充

android:scaleType=”fitXY” //会导致拉伸

 
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web

%d bloggers like this: