gpt4 book ai didi

android - 在一个线程中使用等待和通知

转载 作者:行者123 更新时间:2023-11-29 22:26:09 27 4
gpt4 key购买 nike

我有一个应用程序做接下来的事情:通过 DDMS 接收 GPS 数据并将它们存储在数据库中,当数据存储在数据库中时,我还应该启动一个客户端线程来读取存储在数据库中的新数据,并且将其发送到远程服务器!!!

为了接收 GPS 数据,我做了这样的事情:

 lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);


locationListener = new MyLocationListener();


lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);

在我的 LocationChanged 方法中,我将 GPS 数据插入数据库:

private class MyLocationListener implements LocationListener 

{
@Override

public void onLocationChanged(Location loc) {

if (loc != null) {

latitude=(int)(loc.getLatitude()* 1E6);

longitude=(int)(loc.getLongitude()* 1E6);

db.insertData1(longitude,latitude);
}

}

现在我的问题是:

我应该如何/在哪里启动客户端线程....读取数据库?

它首先尝试在这一行之后立即启动客户端线程:

m.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);

但如果我这样做,我将面临强制关闭的风险,因为客户端线程读取可能为空的数据库。

我怎么知道什么时候开始读取数据库?

我是否应该为客户端线程使用等待/通知协议(protocol),以便在我获取 GPS 更新时阅读数据库???我应该在一个线程中实现等待/通知谁?谢谢...我来这里是为了进一步的问题:)

最佳答案

wait/notify 用于在多个线程并发访问共享数据时同步访问共享数据。它不适用于您的情况。

您需要做的是在开始读取数据库之前简单地检查数据库是否存在:Query if Android database exists!

关于android - 在一个线程中使用等待和通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915449/

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