gpt4 book ai didi

android - 在 GPS 应用程序启动时显示进度对话框

转载 作者:行者123 更新时间:2023-11-30 04:35:10 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我希望在应用程序启动时(GPS 服务启动时)显示进度对话框。我想在 GPS 服务返回有效位置时结束进度对话框。我知道我必须开始另一个线程,但我不知道该怎么做。我有:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 10, this);

在我的 onCreate() 中。

public void onLocationChanged(Location location) 是更新数据的地方。

最佳答案

我假设您遇到的真正问题是您不知道什么时候才能真正获得有效职位,在这种情况下显示进度条将很困难,因为您无法确定距离多远你也一样。

我建议您向用户显示一条消息,内容为“获取 GPS 位置”,并且可能有某种类型的动画,其中包括 GPS 卫星旋转、在 GPS 卫星和 GPS 接收器之间传播的“信号”,或者闪烁的表示您正在获取 GPS 信号的 GPS 图标(但让它看起来更舒服):

Acquiring GPS Signal Acquiring More GPS Signal Maybe a Flashing Thingy

因此,在您的 GUI 线程中,您将渲染动画,同时您将运行另一个线程来获取 GPS 信号。当您获取 GPS 信号时,您将终止渲染:

要启动新线程,您可以这样做:

class GPSPositionGetter extends Runnable
{
private LocationManager _locationManager;
GPSPositionGetter(LocationManager locationManager)
public run()
{
_locationManager.requestLocationUpdates(...);
}
}

Thread t = new Thread(new GPSPositionGetter(locationManager));
t.start();

在您的 GUI 线程中:

while(!positionAcquired)
{
renderAnimation();
}

在你做的回调方法中:

public onLocationChanged(Location location) 
{
if(IsValid(location))
{
positionAcquired = true;
}
}

请注意,您应该将 positionAcquired 声明为 volatile 以确保可见性并防止它在线程的本地内存中兑现。

附言该代码只是让您大致了解该怎么做;还有其他更优雅的解决方案(例如使用 ExecutorService),但一般方法应该没有太大区别。

关于android - 在 GPS 应用程序启动时显示进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6958695/

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