diff --git a/positions/build.properties b/positions/build.properties index 53e1826..1de7253 100644 --- a/positions/build.properties +++ b/positions/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Thu Oct 02 02:36:00 GMT 2025 +#Thu Oct 02 03:09:35 GMT 2025 stageCount=8 libraryProject= baseVersion=15.0 publishVersion=15.0.7 -buildCount=9 +buildCount=14 baseBetaVersion=15.0.8 diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java index d10b831..327802a 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java +++ b/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java @@ -107,7 +107,7 @@ public class LocationActivity extends WinBoLLActivity implements IWinBoLLActivit //initServiceInstance(); // 方式:通过服务PUBLIC单例方法获取实例(不直接new,避免私有数据初始化重复) - mMainService = MainService.getInstance(); + mMainService = MainService.getInstance(LocationActivity.this); // 容错:若单例未初始化(如首次启动),提示并处理 if (mMainService == null) { @@ -315,21 +315,21 @@ public class LocationActivity extends WinBoLLActivity implements IWinBoLLActivit /** * 同步GPS位置到服务(调用服务syncCurrentGpsPosition(),不访问私有字段) */ - public void syncGpsPositionToService(PositionModel gpsModel) { - if (mMainService == null || gpsModel == null) { - LogUtils.w(TAG, "同步GPS失败:服务未就绪或GPS数据无效"); - return; - } - - // 调用服务PUBLIC方法同步GPS(服务内部更新mCurrentGpsPosition) - mMainService.syncCurrentGpsPosition(gpsModel); - // 强制刷新距离(通过服务PUBLIC方法,触发mPositionList距离计算) - mMainService.forceRefreshDistance(); - LogUtils.d(TAG, "GPS位置已同步,通过服务触发距离计算"); - - // 刷新缓存+Adapter(显示最新距离) - refreshCachedDataAndAdapter(); - } +// public void syncGpsPositionToService(PositionModel gpsModel) { +// if (mMainService == null || gpsModel == null) { +// LogUtils.w(TAG, "同步GPS失败:服务未就绪或GPS数据无效"); +// return; +// } +// +// // 调用服务PUBLIC方法同步GPS(服务内部更新mCurrentGpsPosition) +// mMainService.syncCurrentGpsPosition(gpsModel); +// // 强制刷新距离(通过服务PUBLIC方法,触发mPositionList距离计算) +// mMainService.forceRefreshDistance(); +// LogUtils.d(TAG, "GPS位置已同步,通过服务触发距离计算"); +// +// // 刷新缓存+Adapter(显示最新距离) +// refreshCachedDataAndAdapter(); +// } // ---------------------- 辅助方法(统一刷新缓存与Adapter,确保数据一致) ---------------------- /** diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java b/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java index caa1398..25a34df 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java +++ b/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java @@ -63,14 +63,14 @@ public class MainService extends Service { // 2. 单独持有ApplicationContext(避免内存泄漏+确保非null) private static Context sAppContext; // 单例PUBLIC方法(供外部获取实例,确保全局唯一) - public static synchronized MainService getInstance() { + public static synchronized MainService getInstance(Context context) { // 4. 修复后的单例方法:先判空,再返回(避免空指针) // 第一步:先判断实例是否存在(未创建则返回null,不强行调用Context) if (sInstance == null) { // 可选:若调用时Service未启动,主动启动Service(避免后续空指针) - Intent intent = new Intent(sAppContext, MainService.class); - sAppContext.startService(intent); + Intent intent = new Intent(context.getApplicationContext(), MainService.class); + context.getApplicationContext().startService(intent); return null; // 或抛明确异常(如"Service未启动"),不触发空指针 } // 第二步:实例存在时,确保Context非null(双重保险) @@ -184,7 +184,12 @@ public class MainService extends Service { } public void addPosition(PositionModel newPos) { - LogUtils.d(TAG, "addPosition 未实现"); + mPositionList.add(newPos); + savePositionList(); + } + + void savePositionList() { + PositionModel.saveBeanList(MainService.this, mPositionList, PositionModel.class); } /** diff --git a/positions/src/main/res/layout/activity_location.xml b/positions/src/main/res/layout/activity_location.xml index af9064c..e751f33 100644 --- a/positions/src/main/res/layout/activity_location.xml +++ b/positions/src/main/res/layout/activity_location.xml @@ -1,71 +1,67 @@ - + - - + - - + - - + - - + - + - - + - -