我需要从数据库中读取一些数据,同时我正在使用事务在另一个线程中加载一些数据.
读取其他表的所有线程都将停止,直到其他线程中的事务完成为止.
我需要能够从数据库中读取信息而不必担心其他线程.
我已经阅读了很多关于sqlite,android的信息...但没有任何工作,总是我的查询参数被阻止.
我遵循这个建议,因为@KevinGalligan在这个帖子中说(Android上SQLite的最佳做法是什么?)解决锁和其他问题.
1)我只使用一个SQLiteOpenHelper(单例)
2)我从未关闭数据库
我试过了:
用以下内容开始交易:
database.execSQL("begin immediate transaction");
Run Code Online (Sandbox Code Playgroud)
要么
database.beginTransactionNonExclusive();
Run Code Online (Sandbox Code Playgroud)
代替
database.beginTransaction();
Run Code Online (Sandbox Code Playgroud)
不工作,查询被阻止.
我已经读过WAL(database.enableWriteAheadLogging()),但我需要支持api 9.
同时读取事务的任何其他解决方案是更新某些表吗?我不在乎我的信息是否被弃用,更重要的是不要阻止我的线程.
我们正在尝试确定在ServiceMix或WSO2之间选择哪个ESB?
我们希望esb能够:
重要的一点是价格,ServiceMix WSO2是免费的,但ServiceMix也有免费支持,...我不知道WSO2是否如此。
我正在使用凌空库来加载来自互联网的图像.我有一个列表视图,一些行使用volley的库"NetworkImageView"加载,其他行由静态资源加载.
看起来有些不对劲,因为我有错误分配图像的行.
我有一个ArrayAdapter,在这里你有我的getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
House house = houses.get(position);
if (convertView == null) {
LayoutInflater inflater = ((Activity)getContext()).getLayoutInflater();
convertView=inflater.inflate(this.layout, parent, false);
holder=new ViewHolder();
holder.image=(NetworkImageView) convertView.findViewById(R.id.imageView1);
holder.name=(TextView) convertView.findViewById(R.id.housename_listelement_houseslist);
holder.rating=(TextView) convertView.findViewById(R.id.houserating_listelement_houseslist);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(house.getUrl()!=null){
String url=house.getUrl();
holder.image.setImageUrl(url, ((TopHousesListViewPager)getContext()).mImageLoader);
}else{
holder.image.setBackgroundResource(R.drawable.defaulthouse);
}
holder.name.setText(house.getName());
holder.rating.setText(String.format("%.2f",house.getRate()));
return convertView;
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,如果我的对象有一个url,我只会显示来自互联网的图像,但是我正在那些对象没有url但是图像来自其他行的行...
建议?
谢谢!