2

Android アプリ (最大約 300 KB) で TextView を使用して長いテキストを表示しようとしましたが、Nexus 7 でのパフォーマンスはひどいものです (約 10 秒)。テキストはスクロール可能なので、細かく分割して ListView に表示しようとしました (ViewHolder パターンを使用)。パフォーマンスは向上しますが、それでもアニメーションのスクロールは非常に不安定です。実際には、純粋なテキストでのパフォーマンスは受け入れられません (Nexus 7 は最も遅いデバイスではありません) が、最終的にはパフォーマンスを完全に低下させるスタイル付きテキストを (SpannableString を使用して) 使用します。

以下にsystrace画面を示します(実際のリンク、申し訳ありませんが、写真をアップロードするという評判はありません:)):

テキストのレンダリングが重要なタスクであることは知っていますが、iOS はそれを完全に処理するのに、なぜ Android はできないのでしょうか? そして、この問題に対する合理的な解決策はありますか?

ハードウェア アクセラレーションが有効になっています。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = mInflater.inflate(R.layout.element_item_layout, parent, false);
        //element_item_layout file is/contains only one TextView, as below
        holder.textView = (TextView) convertView.findViewById(R.id.element_item_textview);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }

    holder.textView.setText(getItem(position).longText);

    return convertView;
}

private class ViewHolder {
    public TextView textView;
}
4

0 に答える 0