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

如何解决错误:无法在 Android Java 的后台线程上调用 setValue

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

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();
        }

    }
}

记录的错误是: 我得到一个 W/System.err: at com.app.navigationSimulation.LogDataSimulation.simulatedUpdate(LogDataSimulation.java:95) 第 95 行是对 wmManager.receivedUpdate() 的调用和异常消息:无法在后台线程上调用 setValue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?