Android 异步任务错误
我最初直接在UI中进行接口,但收到错误。我改为使用AsyncTask而不是以前的配置,现在收到了不同的错误。我不确定它为什么会抛出错误 LightsMainScreen.javaAndroid 异步任务错误,android,android-asynctask,Android,Android Asynctask,我最初直接在UI中进行接口,但收到错误。我改为使用AsyncTask而不是以前的配置,现在收到了不同的错误。我不确定它为什么会抛出错误 LightsMainScreen.java package com.lnrpuc.lnrpucseniordesign; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import and
package com.lnrpuc.lnrpucseniordesign;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;
import com.lnrpuc.lnrpucseniordesign.LightTest1;
public class LightsMainScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lights_main);
Button returnBtn = (Button)findViewById(R.id.returnBtn);
ToggleButton light3Btn = (ToggleButton)findViewById(R.id.light_3);
light3Btn.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
new UpdateXML().execute(); } } ) ;
returnBtn.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
finish(); } } ) ;
}
private class UpdateXML extends AsyncTask<String, Void, Void>
{
ToggleButton light3Btn = (ToggleButton)findViewById(R.id.light_3);
protected Void doInBackground(String... params) {
if(light3Btn.isChecked()) LightTest1.XMLUpdate("1", "3", "1");
else LightTest1.XMLUpdate("1", "3", "0");
return null;
}
protected void onPostExecute() {}
@Override
protected void onPreExecute() {}
protected void onProgressUpdate() {}
}
}
对数输出
02-06 13:53:38.759: I/dalvikvm(16012): Failed resolving Lcom/lnrpuc/Services/HomeAutomationServicePortType; interface 93 'Ljava/rmi/Remote;'
02-06 13:53:38.759: W/dalvikvm(16012): Link of class 'Lcom/lnrpuc/Services/HomeAutomationServicePortType;' failed
02-06 13:53:38.759: I/dalvikvm(16012): Failed resolving Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy; interface 30 'Lcom/lnrpuc/Services/HomeAutomationServicePortType;'
02-06 13:53:38.759: W/dalvikvm(16012): Link of class 'Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy;' failed
02-06 13:53:38.759: E/dalvikvm(16012): Could not find class 'com.lnrpuc.Services.HomeAutomationServicePortTypeProxy', referenced from method com.lnrpuc.lnrpucseniordesign.LightTest1.XMLUpdate
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to resolve new-instance 31 (Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy;) in Lcom/lnrpuc/lnrpucseniordesign/LightTest1;
02-06 13:53:38.759: D/dalvikvm(16012): VFY: replacing opcode 0x22 at 0x0000
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to resolve exception class 94 (Ljava/rmi/RemoteException;)
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to find exception handler at addr 0x26
02-06 13:53:38.759: W/dalvikvm(16012): VFY: rejected Lcom/lnrpuc/lnrpucseniordesign/LightTest1;.XMLUpdate (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
02-06 13:53:38.759: W/dalvikvm(16012): VFY: rejecting opcode 0x0d at 0x0026
02-06 13:53:38.769: W/dalvikvm(16012): VFY: rejected Lcom/lnrpuc/lnrpucseniordesign/LightTest1;.XMLUpdate (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
02-06 13:53:38.769: W/dalvikvm(16012): Verifier rejected class Lcom/lnrpuc/lnrpucseniordesign/LightTest1;
02-06 13:53:38.769: W/dalvikvm(16012): threadid=11: thread exiting with uncaught exception (group=0x417c0898)
02-06 13:53:38.769: E/AndroidRuntime(16012): FATAL EXCEPTION: AsyncTask #1
02-06 13:53:38.769: E/AndroidRuntime(16012): java.lang.RuntimeException: An error occured while executing doInBackground()
02-06 13:53:38.769: E/AndroidRuntime(16012): at android.os.AsyncTask$3.done(AsyncTask.java:299)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.lang.Thread.run(Thread.java:841)
02-06 13:53:38.769: E/AndroidRuntime(16012): Caused by: java.lang.VerifyError: com/lnrpuc/lnrpucseniordesign/LightTest1
02-06 13:53:38.769: E/AndroidRuntime(16012): at com.lnrpuc.lnrpucseniordesign.LightsMainScreen$UpdateXML.doInBackground(LightsMainScreen.java:41)
02-06 13:53:38.769: E/AndroidRuntime(16012): at com.lnrpuc.lnrpucseniordesign.LightsMainScreen$UpdateXML.doInBackground(LightsMainScreen.java:1)
02-06 13:53:38.769: E/AndroidRuntime(16012): at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-06 13:53:38.769: E/AndroidRuntime(16012): ... 3 more
我很确定不能在主线程之外使用UI元素(例如,在异步任务中)。我建议你放弃AsyncTask,试着解决最初的错误。@BarryFruitman当然可以!这就是为什么这个类有4个方法
doInBackground()
无法更新UI线程
,但其他3个线程中的任何一个都可以更新,这就是它们存在的原因。原始布局的问题是试图在UI中进行联网。如果我在主线程中执行UI工作,然后将值发送到AsyncTask,该怎么办?@JustinLasecki就UI
和AsyncTask
而言,我看不到您有任何做错的地方。如果您正在更新UI
,则会出现不同的异常。类似于的东西只有创建视图的原始线程才能更新它。您正在使用的库似乎存在问题。
02-06 13:53:38.759: I/dalvikvm(16012): Failed resolving Lcom/lnrpuc/Services/HomeAutomationServicePortType; interface 93 'Ljava/rmi/Remote;'
02-06 13:53:38.759: W/dalvikvm(16012): Link of class 'Lcom/lnrpuc/Services/HomeAutomationServicePortType;' failed
02-06 13:53:38.759: I/dalvikvm(16012): Failed resolving Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy; interface 30 'Lcom/lnrpuc/Services/HomeAutomationServicePortType;'
02-06 13:53:38.759: W/dalvikvm(16012): Link of class 'Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy;' failed
02-06 13:53:38.759: E/dalvikvm(16012): Could not find class 'com.lnrpuc.Services.HomeAutomationServicePortTypeProxy', referenced from method com.lnrpuc.lnrpucseniordesign.LightTest1.XMLUpdate
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to resolve new-instance 31 (Lcom/lnrpuc/Services/HomeAutomationServicePortTypeProxy;) in Lcom/lnrpuc/lnrpucseniordesign/LightTest1;
02-06 13:53:38.759: D/dalvikvm(16012): VFY: replacing opcode 0x22 at 0x0000
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to resolve exception class 94 (Ljava/rmi/RemoteException;)
02-06 13:53:38.759: W/dalvikvm(16012): VFY: unable to find exception handler at addr 0x26
02-06 13:53:38.759: W/dalvikvm(16012): VFY: rejected Lcom/lnrpuc/lnrpucseniordesign/LightTest1;.XMLUpdate (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
02-06 13:53:38.759: W/dalvikvm(16012): VFY: rejecting opcode 0x0d at 0x0026
02-06 13:53:38.769: W/dalvikvm(16012): VFY: rejected Lcom/lnrpuc/lnrpucseniordesign/LightTest1;.XMLUpdate (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
02-06 13:53:38.769: W/dalvikvm(16012): Verifier rejected class Lcom/lnrpuc/lnrpucseniordesign/LightTest1;
02-06 13:53:38.769: W/dalvikvm(16012): threadid=11: thread exiting with uncaught exception (group=0x417c0898)
02-06 13:53:38.769: E/AndroidRuntime(16012): FATAL EXCEPTION: AsyncTask #1
02-06 13:53:38.769: E/AndroidRuntime(16012): java.lang.RuntimeException: An error occured while executing doInBackground()
02-06 13:53:38.769: E/AndroidRuntime(16012): at android.os.AsyncTask$3.done(AsyncTask.java:299)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.lang.Thread.run(Thread.java:841)
02-06 13:53:38.769: E/AndroidRuntime(16012): Caused by: java.lang.VerifyError: com/lnrpuc/lnrpucseniordesign/LightTest1
02-06 13:53:38.769: E/AndroidRuntime(16012): at com.lnrpuc.lnrpucseniordesign.LightsMainScreen$UpdateXML.doInBackground(LightsMainScreen.java:41)
02-06 13:53:38.769: E/AndroidRuntime(16012): at com.lnrpuc.lnrpucseniordesign.LightsMainScreen$UpdateXML.doInBackground(LightsMainScreen.java:1)
02-06 13:53:38.769: E/AndroidRuntime(16012): at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-06 13:53:38.769: E/AndroidRuntime(16012): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-06 13:53:38.769: E/AndroidRuntime(16012): ... 3 more