gpt4 book ai didi

java - 如何通过另一个线程修改 UI 线程中的变量

转载 作者:行者123 更新时间:2023-12-01 12:27:08 24 4
gpt4 key购买 nike

我编写了一个小应用程序,显示从 GoogleMap (API v2) 上的 MySQL 数据库下载的一些信息。

到目前为止,我只是偶尔使用 AssyncTask 询问我的服务器并更新我的 map ,但现在我希望动态更新我的 map ,所以我必须“实时”向我的服务器发出请求。所以我想我应该使用一个线程来循环请求我的数据库。

我尝试编写自己的线程,如下所示(简化版本),但也许我做错了什么,因为它不起作用:

public class loadMessages extends Thread {
    String messages[];
    public void run() {
        try{
            while(zoomActuel > 13){
 
                messages = myHttpRequest(); //simplified fonction to fetch info in my DB
 
                runOnUiThread(new Runnable() {
                    public void run() { //i update my map by updating my ArrayList<Marker> called myMarkers
                        for (int i = 0; i < messages.length; i++) {
                            myMarkers.add(googleMap.addMarker(new MarkerOptions()
                            .position(new LatLng(lat[i], lng[i]))
                            .title(messages[i])));
                        }
                    }
                });
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

如果有人知道我应该如何做,请提前致谢;)

最佳答案

我认为这些教程会对您有所帮助。

您可以使用 asynctask 并更新 ui onProgressUpdate() 或 onPostExecute(),您可以使用 runnableOnUiThread 或带有处理程序的线程。

http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html

http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/

关于java - 如何通过另一个线程修改 UI 线程中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com