我遇到一个问题,即条形码每个字符花费近一秒钟来写入编辑文本,快速的背景。
我在整个应用程序中使用相同的代码,在每个其他实例中,条形码需要几毫秒来输出字符串。
我无法弄清楚为什么在这种情况下这么慢。它逐个字符地查找keyCode 66,即条形码的结尾。
这是我正在使用的代码,它包含在片段中。
txtBarcode = (EditText) rootView.findViewById(R.id.etInput);
txtBarcode.requestFocus();
txtBarcode.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == 66 ) {
String chars = txtBarcode.getText().toString();
if (chars.length() > 1) bcode = chars.trim();
if (bcode.length() > 0) {
pd = ProgressDialog.show(getActivity(), "", "Checking - Please Wait...", false);
new updateScanned(getActivity(), DeliveryScanFragment.this, bcode, CourierHeaderID).execute();
bcode = "";
txtBarcode.setText("");
return true;
}
}
return false;
}
});
和布局的xml文件
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=""
android:id="@+id/tvdc"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/iteminstructions"
android:id="@+id/tvinstructions"
android:layout_below="@+id/tvdc"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/expecteditems"
android:id="@+id/tvexp"
android:layout_below="@+id/tvinstructions"
android:layout_toLeftOf="@+id/tvinstructions"
android:layout_marginRight="115dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/scanneditems"
android:id="@+id/tvscan"
android:layout_alignTop="@+id/tvexp"
android:layout_toRightOf="@+id/tvinstructions"
android:layout_marginLeft="80dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cartonimage"
android:src="@drawable/p"
android:layout_above="@+id/tvinstructions"
android:layout_toStartOf="@+id/tvdc"
android:contentDescription="Carton Image"/>
</RelativeLayout>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/altcode"
android:id="@+id/altcode"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/colour"
android:id="@+id/colour"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/size"
android:id="@+id/size"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/expecteditems"
android:id="@+id/expected"
android:layout_weight="0.25"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/altcode"
android:id="@+id/altcode0"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/colour"
android:id="@+id/colour0"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/size"
android:id="@+id/size0"
android:layout_weight="0.25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/scanneditems"
android:id="@+id/scanned"
android:layout_weight="0.25"/>
</TableRow>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ListView
android:layout_width="wrap_content"
android:layout_height="320dp"
android:id="@+id/LVExpected"
android:layout_weight="0.5"
android:headerDividersEnabled="true"
android:background="#ffdfffdb"/>
<ListView
android:layout_width="wrap_content"
android:layout_height="320dp"
android:id="@+id/LVScanned"
android:layout_weight="0.5"
android:background="#ffc2ffff"/>
</TableRow>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/processdel"
android:id="@+id/btnProcess"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="34dp"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/clearButton"
android:layout_marginRight="49dp"
android:src="@drawable/clearhistorys"
android:background="#ffffffff"
android:layout_alignTop="@+id/btnProcess"
android:layout_toLeftOf="@+id/btnProcess"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/etInput"
android:layout_alignTop="@+id/clearButton"
android:layout_alignParentLeft="true"
android:background="@android:color/black"
android:textColor="#ffffffff"
android:minWidth="60dp"/>
</RelativeLayout>
</TableLayout>
我只能猜测我的xml中的某些内容会导致延迟,但这是一个完全猜测并且可能不相关,我读取条形码的logcat输出如下:
01-20 13:01:43.531 22402-22408/com.x.retailtabs.app D/dalvikvm﹕ GC_CONCURRENT freed 799K, 31% free 6497K/9364K, paused 24ms+5ms, total 58ms
01-20 13:01:43.867 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:43.875 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:44.796 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:44.804 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:45.648 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:45.656 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:46.531 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:46.539 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:47.367 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:47.375 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:48.250 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:48.257 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:49.156 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:49.156 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:50.015 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:50.015 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:50.101 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ setProgress = 0
01-20 13:01:50.101 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ setProgress = 0, fromUser = false
01-20 13:01:50.101 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ mProgress = 0mIndeterminate = false, mMin = 0, mMax = 10000
01-20 13:01:50.359 22402-22402/com.x.retailtabs.app E/ViewRootImpl﹕ onInputEvent:dispatchAttachedToWindow is not called.[event:KeyEvent { action=ACTION_UP, keyCode=KEYCODE_ENTER, scanCode=28, metaState=0, flags=0x8, repeatCount=0, eventTime=403650276, downTime=403650263, deviceId=18, displayId=0, source=0x101 }]
01-20 13:01:51.211 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:51.211 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:51.336 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: left = 0
01-20 13:01:51.336 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: top = 0
01-20 13:01:51.336 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: right = 48
01-20 13:01:51.343 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: bottom = 48
01-20 13:01:51.359 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:51.382 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:51.398 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:51.429 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ setProgress = 0
01-20 13:01:51.429 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ setProgress = 0, fromUser = false
01-20 13:01:51.429 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ mProgress = 0mIndeterminate = false, mMin = 0, mMax = 10000
01-20 13:01:51.757 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: left = 0
01-20 13:01:51.757 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: top = 0
01-20 13:01:51.757 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: right = 48
01-20 13:01:51.757 22402-22402/com.x.retailtabs.app D/ProgressBar﹕ updateDrawableBounds: bottom = 48
01-20 13:01:51.796 22402-22402/com.x.retailtabs.app E/ViewRootImpl﹕ sendUserActionEvent() mView == null
01-20 13:01:52.937 22402-22408/com.x.retailtabs.app D/dalvikvm﹕ GC_CONCURRENT freed 217K, 29% free 6668K/9364K, paused 12ms+7ms, total 45ms
01-20 13:01:53.461 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:53.711 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:53.898 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:53.921 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:53.937 22402-22402/com.x.retailtabs.app D/AbsListView﹕ unregisterIRListener() is called
01-20 13:01:53.961 22402-22402/com.x.retailtabs.app E/ViewRootImpl﹕ sendUserActionEvent() mView == null