java - 创建新线程 - Android

标签 java android multithreading gps looper

我正在尝试实现一个循环程序,以便我可以创建一个线程来将 GPS 坐标发送到数据库。我是 Java 新手,这真的很令人困惑,但也许你可以提供帮助。当按下按钮时,主 Activity 将调用以下类方法。该方法找到 GPS 位置,然后将其发送到不同类的方法,该方法将纬度和经度(以及用户 ID)发送到数据库。我的应用程序有时会减慢速度并卡住,因此我似乎需要实现某种方法来为此过程创建一个新线程。有任何想法吗。我是菜鸟,所以要温柔。这是我的代码:

    public class LocationActivity extends Thread{

    private LocationManager locManager;
    private LocationListener locListener;

    public void startLocation(Context context, String usr_id2)
    {   
        final String usr = usr_id2;

    //get a reference to the LocationManager
    locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);


    //checked to receive updates from the position
    locListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            SendActivity.send(location, usr);
        }
        public void onProviderDisabled(String provider){
            //labelState.setText("Provider OFF");
        }
        public void onProviderEnabled(String provider){
            //labelState.setText("Provider ON ");
        }
        public void onStatusChanged(String provider, int status, Bundle extras){
            //Log.i("", "Provider Status: " + status);
            }
        };

        Looper looper = null;
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener, looper);
    }
}

还有一个问题,我会在此处添加循环程序还是在实际将信息发送到数据库的类中添加循环程序吗?它使用 HTTP Post 发送到 PHP 程序,该程序将信息添加到 MySQL 数据库。

最佳答案

我很想在这里尝试不同的策略。 Android 有一个名为 AsynTask 的类编写它是为了减轻开发人员在线程上完成的卸载工作的负担。

AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

在写入数据库并将数据发送回服务器方面,我会考虑使用 Service ,但请记住,唯一不在 UI 线程上 native 运行的服务是 IntentService

关于java - 创建新线程 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483692/

相关文章:

android - 如何使用接近传感器和音频管理器减少Android设备中的音量

c - 多线程客户端服务器执行有时不会结束

java - 通过外部切换标志来运行线程(从 GUI)

c# - Windows窗体应用程序-缓慢/无响应的UI

java - 用于在 android 中存储 arraylist 的共享首选项

Java Spring - ManyToMany 调用错误 - 对象引用未保存的 transient 实例

java - 通过控制台 Java 获取输入

java - 未经修改抛出 ConcurrentModificationException

android - 使用 AlarmManager 调用服务

android - React-native/AWS API Gateway 安卓问题