报错:
Log:onCrashed()–>android.view.ViewRootImpl$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.
报错原因:
一般在主线程操作UI,而此次有可能在子线程里操作了UI
解决方案:
在代码中找到涉及UI操作的代码,看它是在哪个线程里进行操作。
为里便于查看是在主线程还是子线程,可用以下方法判别:
1、查看当前线程id
long id = Thread.currentThread().getId();
2、查看当前线程名字
String name = Thread.currentThread().getName();
3、查看当前主线程的id
long mainid = Looper.getMainLooper().getThread().getId();
4、查看当前主线程的名字
String mainname = Looper.getMainLooper().getThread().getName();
当前线程id等于主线程id,则此线程处于主线程,否则处于子线程。
一般js调用Android方法都是在子线程操作的,涉及UI操作都要切换到主线程操作(跳转到登录页面,回退,保存图片等)。