相关疑难解决方法(0)

Android:Activity.runOnUiThread和View.post有什么区别?

有什么区别Activity.runOnUiThreadView.post,有人可以解释一下吗?

android

92
推荐指数
3
解决办法
3万
查看次数

什么是Android UiThread(UI线程)

有人可以向我解释一下UI线程到底是什么吗?在developer.android.com上,它说的是runOnUiThread函数

public final void runOnUiThread(Runnable action)

从以下版本开始:API Level 1在UI线程上运行指定的操作.如果当前线程是UI线程,则立即执行该操作.如果当前线程不是UI线程,则将操作发布到UI线程的事件队列.

UI线程是否意味着每次通过某些ui活动(如来电或屏幕调暗等)将活动推送到后台时都会运行此线程?如果没有,UI线程到底包含什么?

谢谢

android ui-thread

78
推荐指数
3
解决办法
7万
查看次数

EditText.setText(String)使数组超出范围

我有一个从地址解析器获取位置地址的应用,它在线程内执行请求。调用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)

java multithreading android google-geocoder

5
推荐指数
0
解决办法
557
查看次数