如何解决代号一后台操作
我们正忙于开发具有以下要求的应用程序,
- 全天跟踪用户的位置,以便我们可以在地图上绘制其路线
- 该应用程序应将所有信息本地存储在设备上,并且当设备能够连接到服务器时,它应自动同步其数据。
为此,我们正在尝试使用Background Location和Background Fetch函数。 我们创建了一个概念验证应用,该应用可以执行以下操作,
- 位置跟踪:位置侦听器只需将其坐标写入设备上的SQLite数据库以供以后使用。
后台监听器的设置
LocationManager locMan = LocationManager.getLocationManager();
if (locMan == null) {
Dialog.show("Location Error","Location Manager not found","OK",null);
} else {
if (!locMan.isGPSDetectionSupported()) {
Dialog.show("Location Error","GPS detection not supported.",null);
} else {
if (!locMan.isGPSEnabled()) {
Dialog.show("Location Error","GPS not enabled. Please close the app,turn on your location and try again.",null);
} else {
if (locMan.isBackgroundLocationSupported()) {
locMan.setBackgroundLocationListener(LocationListener.class);
Dialog.show("Location","Background location listener loaded.",null);
} else {
Dialog.show("Location Error","Background location not supported",null);
}
}
}
}
还有监听器类本身,
public class LocationListener implements com.codename1.location.LocationListener {
@Override
public void locationUpdated(Location arg0) {
String msg = arg0.getLatitude() + " - " + arg0.getLongitude();
ASDTester.logMsg(ASDTester.MSG_LOC_COORDS,msg);
}
@Override
public void providerStateChanged(int arg0) {
String msg = "" + arg0;
ASDTester.logMsg(ASDTester.MSG_LOC_STATE_CHANGED,msg);
}
}
对ASDTester.logMsg(int type,String msg)的调用仅在SQLite数据库表中创建一条记录
- 背景提取:performBackgroundFetch实现还将一条消息记录到SQLite数据库,其中存储了该方法触发时间的时间戳
设置背景提取间隔,
if (Display.getInstance().isBackgroundFetchSupported()) {
Display.getInstance().setPreferredBackgroundFetchInterval(60);
Dialog.show("Background","Background Fetch Interval set",null);
} else {
Dialog.show("Background Error","Background Fetch Not Supported",null);
}
实施performBackgroundFetch
@Override
public void performBackgroundFetch(long arg0,Callback<Boolean> arg1) {
logMsg(MSG_BGF_TIMESTAMP,System.currentTimeMillis() + "");
arg1.onSucess(Boolean.TRUE);
}
最后是iOS的构建提示
ios.background_modes=fetch,location
该实现不适用于Android或iOS。 位置侦听器在初始化时仅触发一次。 而且后台抓取根本不会触发。
- 在植入这些功能时我们做错了吗?
- 人们将如何调试这些功能以尝试找出问题所在?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。