有什么区别Activity.runOnUiThread和View.post,有人可以解释一下吗?
有人可以向我解释一下UI线程到底是什么吗?在developer.android.com上,它说的是runOnUiThread函数
public final void runOnUiThread(Runnable action)
从以下版本开始:API Level 1在UI线程上运行指定的操作.如果当前线程是UI线程,则立即执行该操作.如果当前线程不是UI线程,则将操作发布到UI线程的事件队列.
UI线程是否意味着每次通过某些ui活动(如来电或屏幕调暗等)将活动推送到后台时都会运行此线程?如果没有,UI线程到底包含什么?
谢谢
我有一个从地址解析器获取位置地址的应用,它在线程内执行请求。调用getActivity()。runOnUiThread时,我已经在字符串变量中包含了来自geocoder的地址响应,然后检查它是否为空,然后开始将其值分配给视图中的字段:
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (isAdded())
if (!TextUtils.isEmpty(strAddress)){
et.setFocusable(false);
et.setFocusableInTouchMode(false);
et.setText(strAddress);
et.setTextColor(getResources().getColor(
android.R.color.black));
et.setFocusable(true);
et.setFocusableInTouchMode(true);
} else {
et.setTextColor(getResources().getColor(
android.R.color.black));
}
etSource.setEnabled(true);
}
});
Run Code Online (Sandbox Code Playgroud)
在这条线上:
et.setText(strAddress);
Run Code Online (Sandbox Code Playgroud)
错误
ArrayIndexOutOfBounds:设置范围-1
抛出并间歇性地发生,为什么会发生?
根据要求编辑
java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1270)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
at android.text.Selection.setSelection(Selection.java:76)
at android.widget.Editor$SelectionModifierCursorController.resetDragAcceleratorState(Editor.java:5689)
at android.widget.Editor$SelectionModifierCursorController.resetTouchOffsets(Editor.java:5679)
at android.widget.Editor.sendOnTextChanged(Editor.java:1280)
at android.widget.TextView.sendOnTextChanged(TextView.java:8220)
at android.widget.TextView.setText(TextView.java:4494)
at android.widget.TextView.setText(TextView.java:4348)
at android.widget.EditText.setText(EditText.java:89)
at android.widget.TextView.setText(TextView.java:4323)
at library.fragments.MapFragment$17$1.run(MapFragment.java:2156)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:159)
at android.app.ActivityThread.main(ActivityThread.java:6097)
at java.lang.reflect.Method.invoke(Native Method) …Run Code Online (Sandbox Code Playgroud)