Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 加快DynamoDBScanExpression搜索速度_Android_Performance_Listview_Amazon Dynamodb - Fatal编程技术网

Android 加快DynamoDBScanExpression搜索速度

Android 加快DynamoDBScanExpression搜索速度,android,performance,listview,amazon-dynamodb,Android,Performance,Listview,Amazon Dynamodb,在我的Android应用程序中,我有一个类可以扫描DynamoDB表,并在ListView中返回结果 CatalogActivity.java: private class Scan extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); mpd = new ProgressDialog(

在我的Android应用程序中,我有一个类可以扫描DynamoDB表,并在ListView中返回结果

CatalogActivity.java:

private class Scan extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mpd = new ProgressDialog(CatalogActivity.this);
        mpd.setTitle(HomeActivity.name);
        mpd.setMessage("Searching for items...");
        mpd.setIndeterminate(false);
        mpd.show();
    }

    @Override
    protected Void doInBackground(Void... voids) {
        scanExpression = new DynamoDBScanExpression();
        Condition condition = new Condition()
                .withComparisonOperator(ComparisonOperator.CONTAINS)
                .withAttributeValueList(new AttributeValue(HomeActivity.id));
        scanExpression.addFilterCondition("productId", condition);

        result = HomeActivity.mapper.scan(Product.class, scanExpression);
        arraylist = new ArrayList<Product>();
        for (Product prod : result) {
            prod.setName(prod.getName());
            prod.setPrice(prod.getPrice());
            prod.setProductId(prod.getProductId());
            prod.setSummary(prod.getSummary());
            prod.setSale(prod.getSale());
            prod.setSalePrice(prod.getSalePrice());
            arraylist.add(prod);
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);

        lv = (ListView) findViewById(R.id.itemsListView);
        adapter = new ListViewAdapter(CatalogActivity.this, arraylist);
        lv.setAdapter(adapter);

        mpd.dismiss();
    }
}
私有类扫描扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
mpd=新建进度对话框(CatalogActivity.this);
mpd.setTitle(HomeActivity.name);
设置消息(“搜索项目…”);
mpd.SetUndeterminate(假);
mpd.show();
}
@凌驾
受保护的空位背景(空位…空位){
scanExpression=new DynamoDBScanExpression();
条件条件=新条件()
.withComparisonOperator(ComparisonOperator.CONTAINS)
.WithAttributeValue列表(新的AttributeValue(HomeActivity.id));
scanExpression.addFilterCondition(“productId”,条件);
结果=HomeActivity.mapper.scan(Product.class,scanExpression);
arraylist=新的arraylist();
用于(产品生产:结果){
prod.setName(prod.getName());
prod.setPrice(prod.getPrice());
prod.setProductId(prod.getProductId());
prod.setSummary(prod.getSummary());
prod.setSale(prod.getSale());
prod.setSalePrice(prod.getSalePrice());
arraylist.add(prod);
}
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
lv=(ListView)findViewById(R.id.itemsListView);
adapter=新的ListViewAdapter(CatalogActivity.this,arraylist);
低压设置适配器(适配器);
mpd.discouse();
}
}
ListViewAdapter.java:

public class ListViewAdapter extends BaseAdapter {

Context mContext;
LayoutInflater inflater;
private List<Product> result = null;
private ArrayList<Product> arraylist;

public ListViewAdapter(Context context, List<Product> result) {
    mContext = context;
    this.result = result;
    inflater = LayoutInflater.from(mContext);
    this.arraylist = new ArrayList<Product>();
    this.arraylist.addAll(result);
}

public class ViewHolder {
    TextView itemName;
    TextView itemPrice;
    ImageView itemImage;
}

// Other required methods...

@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
    final ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.lv_items, null);

        holder.itemName = (TextView) view.findViewById(R.id.itemNameList);
        holder.itemPrice = (TextView) view.findViewById(R.id.itemPriceList);
        holder.itemImage = (ImageView) view.findViewById(R.id.itemImageList);
        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    holder.itemName.setText(result.get(position).getName());
    holder.itemPrice.setText(Integer.toString(result.get(position).getPrice()) + "$");
    productId = result.get(position).getProductId();
    productSale = result.get(position).getSale();
    productSummary = result.get(position).getSummary();
公共类ListViewAdapter扩展了BaseAdapter{
语境;
充气机;
私有列表结果=null;
私有ArrayList ArrayList;
公共ListViewAdapter(上下文、列表结果){
mContext=上下文;
this.result=结果;
充气器=从(mContext)开始的充气器;
this.arraylist=新的arraylist();
this.arraylist.addAll(结果);
}
公共类视图持有者{
TextView项目名称;
文本视图项目价格;
图像查看项目图像;
}
//其他必需的方法。。。
@凌驾
公共视图getView(最终整数位置、视图视图、视图组视图组){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
视图=充气机。充气(R.layout.lv_项目,空);
holder.itemName=(TextView)view.findViewById(R.id.itemName列表);
holder.itemPrice=(TextView)view.findViewById(R.id.itemPriceList);
holder.itemImage=(ImageView)view.findViewById(R.id.itemImageList);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.itemName.setText(result.get(position.getName());
holder.itemPrice.setText(Integer.toString(result.get(position).getPrice())+“$”;
productId=result.get(position.getProductId();
productSale=result.get(position.getSale();
productSummary=result.get(position.getSummary();
如您所见,
CatalogActivity
扫描DynamoDB表并返回其结果,方法是将结果发送到
ListViewAdapter
ListViewAdapter
获取结果,并将其输入预定义单元格布局中的ListView

有什么问题吗?在
CatalogActivity
中的
onPreExecute
方法中,我设置了一个要显示的进度对话框。在
onPostExecute
方法中,我取消了此对话框。问题是对话框在几秒钟后被取消,但ListView单元格仅在大约半分钟或整分钟后显示


有没有办法加快扫描速度并更快地应用单元格?

扫描返回的记录总数是多少?表中设置的读取吞吐量是多少?表中大约有12条记录,但这可能会发生变化。关于读取吞吐量,您是指预配读取容量还是类似的内容?因为如果是,那么我有10.这也可能是由于你的设备/服务器和DimaDoB区域之间的延迟造成的。有什么办法可以减少时间吗?我的DyMoDB表在北弗吉尼亚州,我在中东。你认为这是相关的吗?