错误:无法在Android Java中的后台线程上调用setValue

错误:无法在Android Java中的后台线程上调用setValue,java,android,android-threading,Java,Android,Android Threading,本期不包括Livedata。我已经通读了几个问题,但没有找到问题的答案。下面的文件给出了错误。simulatedUpdate()是从后台线程调用的。问题在于在simulatedUpdate()中调用的call receivedLocationUpdate()方法。我假设传递的参数正在调用集合。。。方法在某种程度上。我需要知道为什么会发生这种情况,以及在当前情况下如何调用此方法 public class LogDataSimulation { SharedPreferences defa

本期不包括Livedata。我已经通读了几个问题,但没有找到问题的答案。下面的文件给出了错误。simulatedUpdate()是从后台线程调用的。问题在于在simulatedUpdate()中调用的call receivedLocationUpdate()方法。我假设传递的参数正在调用集合。。。方法在某种程度上。我需要知道为什么会发生这种情况,以及在当前情况下如何调用此方法

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已添加详细信息