错误:无法在Android Java中的后台线程上调用setValue
本期不包括Livedata。我已经通读了几个问题,但没有找到问题的答案。下面的文件给出了错误。simulatedUpdate()是从后台线程调用的。问题在于在simulatedUpdate()中调用的call receivedLocationUpdate()方法。我假设传递的参数正在调用集合。。。方法在某种程度上。我需要知道为什么会发生这种情况,以及在当前情况下如何调用此方法错误:无法在Android Java中的后台线程上调用setValue,java,android,android-threading,Java,Android,Android Threading,本期不包括Livedata。我已经通读了几个问题,但没有找到问题的答案。下面的文件给出了错误。simulatedUpdate()是从后台线程调用的。问题在于在simulatedUpdate()中调用的call receivedLocationUpdate()方法。我假设传递的参数正在调用集合。。。方法在某种程度上。我需要知道为什么会发生这种情况,以及在当前情况下如何调用此方法 public class LogDataSimulation { SharedPreferences defa
public class LogDataSimulation {
SharedPreferences defaultPreferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
private static final String TAG = "LogDataSimulation";
public static boolean simulatedDataEnabled;
WMManager wmManager = new WMManager();
public LogDataSimulation() {
simulatedDataEnabled = defaultPreferences.getBoolean(kSimulationMode, false);
}
public synchronized void simulatedUpdate() {
InputStream logFileStream = null;
try {
AssetManager assetManager = MyApplication.getAppContext().getAssets();
logFileStream = assetManager.open("file.csv");
InputStreamReader streamReader = new InputStreamReader(logFileStream, Charset.defaultCharset());
CSVReader reader = new CSVReader(streamReader);
String[] nextLine;
double headingAccuracy = 0.0;
double strideAccuracy = 0.0;
double currentStepLength = 0.0;
int totalStepCount = 0;
double cumulativeDistance = 0.0;
double latitude = 0.0;
double longitude = 0.0;
double altitude = 0.0;
double userHeading = 0.0;
Location globalLocation = new Location("");
int floorID = 0;
double stepBias = 0.0;
double stepBiasAccuracy = 0.0;
double orientationBias = 0.0;
double orientationBiasAccuracy = 0.0;
TestUpdate update = new TestUpdate();
boolean header = true;
while ((nextLine = reader.readNext()) != null) {
if (nextLine[2].equalsIgnoreCase("data")) {
//Throw the header.
if (header) {
header = false;
continue;
}
headingAccuracy = Double.valueOf(nextLine[17]);
strideAccuracy = Double.valueOf(nextLine[22]);
currentStepLength = Double.valueOf(nextLine[24]);
totalStepCount = Integer.valueOf(nextLine[25]);
cumulativeDistance = Double.valueOf(nextLine[26]);
latitude = Double.valueOf(nextLine[30]);
longitude = Double.valueOf(nextLine[31]);
altitude = Double.valueOf(nextLine[32]);
userHeading = Double.valueOf(nextLine[36]);
globalLocation = update.globalParticlesLocation();
floorID = 10000;
stepBias = Double.valueOf(nextLine[39]);
stepBiasAccuracy = Double.valueOf(nextLine[41]);
orientationBias = Double.valueOf(nextLine[43]);
orientationBiasAccuracy = Double.valueOf(nextLine[46]);
Thread.sleep(1000);
}
wmManager.receivedUpdate(longitude, latitude,
altitude, totalStepCount, cumulativeDistance, currentStepLength,
strideAccuracy, userHeading, headingAccuracy, floorID,
globalLocation, stepBias, stepBiasAccuracy, orientationBias,
orientationBiasAccuracy);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
记录的错误是:
我在com.app.navigationSimulation.LogDataSimulation.simulatedUpdate(LogDataSimulation.java:95)得到一个W/System.err:at com.app.navigationSimulation.LogDataSimulation.simulatedUpdate)第95行是对wmManager.receivedUpdate()的调用,异常消息:无法在后台线程上调用setValue我在com.app.navigationSimulation.LogDataSimulation.simulatedUpdate得到一个W/System.err:(LogDataSimulation.java:95)第95行是对wmManager.receivedUpdate()的调用,异常消息:无法在后台线程上调用setValue已添加详细信息