- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
搜索后我发现某些手机(如 Galaxy s)受到一个奇怪的错误或导致此错误的任何原因的影响:
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2934)
at android.view.ViewRoot.invalidateChild(ViewRoot.java:643)
at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:669)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
at android.view.View.invalidate(View.java:5279)
at android.webkit.WebView.selectionDone(WebView.java:4470)
at android.webkit.WebView.clearHelpers(WebView.java:1295)
at android.webkit.WebView.loadDataWithBaseURL(WebView.java:1714)
at c.a(Unknown Source)
at c.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
... 4 more
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2934)
at android.view.ViewRoot.invalidateChild(ViewRoot.java:643)
at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:669)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
at android.view.View.invalidate(View.java:5279)
at android.webkit.WebView.selectionDone(WebView.java:4470)
at android.webkit.WebView.clearHelpers(WebView.java:1295)
at android.webkit.WebView.loadDataWithBaseURL(WebView.java:1714)
at c.a(Unknown Source)
at c.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
如果需要的话,这是 logcat,从这里看来是滑动功能的问题:
10-27 19:19:20.329 I/InputReader( 166): dispatchTouch::touch event's action is 1
10-27 19:19:20.329 I/InputDispatcher( 166): Delivering touch to current input target: action: 1, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:20.749 I/InputReader( 166): dispatchTouch::touch event's action is 0
10-27 19:19:20.749 I/InputDispatcher( 166): Delivering touch to current input target: action: 0, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:21.689 I/InputReader( 166): dispatchTouch::touch event's action is 1
10-27 19:19:21.689 I/InputDispatcher( 166): Delivering touch to current input target: action: 1, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:21.689 W/webview ( 1125): Miss a drag as we are waiting for WebCore's response for touch down.
10-27 19:19:21.989 I/InputReader( 166): dispatchTouch::touch event's action is 0
10-27 19:19:21.989 I/InputDispatcher( 166): Delivering touch to current input target: action: 0, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:22.159 I/Ads ( 1125): Refreshing ad.
10-27 19:19:22.169 I/webclipboard( 1125): clipservice: android.sec.clipboard.ClipboardExManager@4051cb08
10-27 19:19:22.259 I/Ads ( 1125): adRequestUrlHtml: <html><head><script src="http://www.gstatic.com/afma/sdk-core-v40.js"></script><script>AFMA_buildAdURL({"preqs":15,"u_sd":1.0,"u_w":320,"slotname":"a14e098781b871d","msid":"***PACKEGE_NAME***","js":"afma-sdk-a-v4.0.4","isu":"F1B8EEEA64C5716BA996D22689C17557","format":"320x50_mb","net":"wi","app_name":"4.0.4.android.***PACKEGE_NAME***","hl":"pt","u_h":480,"u_so":"p","u_audio":1,"prl":792});</script></head><body></body></html>
10-27 19:19:22.449 I/InputReader( 166): dispatchTouch::touch event's action is 1
10-27 19:19:22.449 I/InputDispatcher( 166): Delivering touch to current input target: action: 1, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:22.449 W/webview ( 1125): Miss a drag as we are waiting for WebCore's response for touch down.
10-27 19:19:22.599 I/Ads ( 1125): Received ad url: <"url": "http://googleads.g.doubleclick.net:80/mads/gma?preqs=15&u_sd=1&u_w=320&slotname=a14e098781b871d&msid=***PACKEGE_NAME***&js=afma-sdk-a-v4.0.4&isu=F1B8EEEA64C5716BA996D22689C17557&format=320x50_mb&net=wi&app_name=4.0.4.android.***PACKEGE_NAME***&hl=pt&u_h=480&u_so=p&u_audio=1&prl=792&output=html®ion=mobile_app&u_tz=240&ex=1&client_sdk=1&askip=0", "afmaNotifyDt": "null">
10-27 19:19:22.609 I/InputReader( 166): dispatchTouch::touch event's action is 0
10-27 19:19:22.609 I/InputDispatcher( 166): Delivering touch to current input target: action: 0, channel '4096f5c8 ***PACKEGE_NAME***/***PACKEGE_NAME***.Game (server)'
10-27 19:19:23.339 W/dalvikvm( 1125): threadid=11: thread exiting with uncaught exception (group=0x40018578)
10-27 19:19:23.339 E/ACRA ( 1125): ACRA caught a RuntimeException exception for ***PACKEGE_NAME***. Building report.
10-27 19:19:23.339 D/ACRA ( 1125): Retrieve application default SharedPreferences.
10-27 19:19:23.349 V/webview ( 1125): ZoomScale 3 mPreserveZoom: false
10-27 19:19:23.489 I/ACRA ( 1125): READ_LOGS granted! ACRA can include LogCat and DropBox data.
10-27 19:19:23.519 D/ACRA ( 1125): Retrieving logcat output...
唯一可能导致此错误的是我在游戏 Intent 的应用程序中使用的计时器,我尝试设置一个处理程序,但我在 ACRA 日志中看到了很多崩溃。
这是我的 Intent 的内容,我希望有人能帮助我:)
startB.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
startB.setEnabled(false);
partiColTempo(tempox);
}
});
}
private void displayText(final String text){
this.runOnUiThread(new Runnable(){
//@Override
public void run() {
tempo.setText(text);
if (text.equals("Finished")){
eseguiSuono();
assegnaPunti();
startB.setEnabled(true);
//elapsed=0;
tempo.setText("Waiting");
}
}});
}
private void partiColTempo(int tempox) {
TIMEOUT=tempox*1000;
Log.w("tempo timer", ""+tempox);
elapsed=INTERVAL;
TimerTask task=new TimerTask(){
@Override
public void run() {
elapsed+=INTERVAL;
if(elapsed>TIMEOUT){
this.cancel();
displayText("Finished");
return;
}
//if(some other conditions)
// this.cancel();
displayText(getString(R.string.tempo_rim)+" " + (TIMEOUT-elapsed) / 1000);
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL);
问题出在哪里?因为我在调用 asynctask 时找不到其他地方。
最佳答案
很明显,您正在使用 AsyncTask.doInBackground()
中的 UI(即 View 派生对象)做一些事情。这是不允许的,只有 UI 线程可以接触 UI 对象。
如果您需要在后台/AsyncTask 运行时更新 UI,您必须调用 publishProgress()
这将导致 onProgressUpdate
在 UI 线程上运行。您还可以实现 onPostExecute()
一旦后台线程完成,它也将在 UI 线程上运行。
关于android - 无法解决 android.view.ViewRoot$CalledFromWrongThreadException。需要帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926130/
我已经看到很多关于这个主题的问题,但我对任何答案都不满意。 我希望它有一个 class ConnectionController implements Runnable 负责打开到服务器的连接,读取和
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCon
当我按下按钮时,我不断收到 CalledFromWringThreadException。 我的程序是这样的: public class MainActivity extends Activity i
我正在创建一款使用 Sphero 机器人球的游戏。当游戏开始/恢复时,它会检查配对或连接的球。如果蓝牙关闭,或者没有配对球,它会隐藏连接窗口。如果有配对但未连接的球,则转到此功能。 // If the
我们从 Crashlytics 收到错误报告,影响了相当一部分用户(大约 10%)。这是一个 CalledFromWrongThreadException。 问题是我不知道是什么导致了这个问题,我自己
我有一个 Activity 启动然后创建一个新的 NetworkHandler 实例,在 NetworkHandler 中我在一个新线程上运行它,这样 UI 线程就不会被卡住。 NetworkHand
我在 ListView 中显示了网页下载百分比的进度条。 for(int i=0;i { int id; public UploadTask(int id) {
我有一个 IntentService 可以像这样更新偏好: SharedPreferences.Editor editor = userPrefs.edit(); editor.putInt("COU
我正在尝试使用 Kotlin 协程在后台运行一些繁重的工作。 但是我收到了这个错误信息, 'android.view.ViewRootImpl$CalledFromWrongThreadExcepti
我有一种感觉是我的计时器导致了这次崩溃。奇怪的是我似乎无法在模拟器中重现它,但我的 Play 控制台崩溃报告告诉我用户不断遇到此崩溃: android.view.ViewRootImpl$Called
我使用的是 this , 显示来自互联网的图像,但它会引发如下错误: 04-12 13:45:05.337: E/AndroidRuntime(27897): Caused by: android.v
我的 logcat 中出现错误,指出: java.net.UnknownHostException: apps.example.com 09-13 14:57:28.970: W/System.err
我是 Android 初学者,所以如果这是一个愚蠢的问题,请友善。 我正在尝试动态更新四个 TextView。每当我尝试更新它们时,程序就会崩溃。 我不明白“只有创建 View 层次结构的原始线程才能
我在编写的应用程序中遇到一个非常奇怪的问题。这可能很简单,我对服务、AsyncTasks 以及何时可以再次访问 UI 线程有一些误解。 该应用程序包含一个主要 Activity ,您可以通过该 Act
我正在按照 android 教程构建天气应用程序,但是当我尝试将 mTemperature TextView 设置为我从预测 API 获得的温度时,我收到此错误“android.view.ViewRo
我在做 Espresso 测试时出错 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original threa
我已经创建了一个可以从 Activity 中的任何地方访问的 Handler,并且还编写了一个方法来更轻松地调用处理程序: private Handler textFromBGThread = new
我正在为一个 Android 应用开发一个测试类,我收到了一个 android.view.ViewRootImpl$CalledFromWrongThreadException。该代码假设模拟输入到文
我正在使用 OpenCV 库实现一个应用程序。处理完相机的 inputFrame 后,我想更新我的 TextView。但是,我收到以下错误: 08-01 17:01:45.085: E/Android
我不确定我的低估是否正确,因为我没有得到预期的输出。我有一个类,我在其中调用一个应该启动线程的方法。 public class MainActivity extends Activity { prot
我是一名优秀的程序员,十分优秀!