From c91d4503a63013be3242120ae0ad9cd1b0b8127e Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 12 十二月 2024 17:18:54 +0800 Subject: [PATCH] 优化定位服务相关代码 --- app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 30 +++++---- app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java | 29 +++++---- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 26 +++----- app/src/main/java/com/dayu/pipirrapp/utils/ServiceUtils.java | 38 ++++++++++++ 4 files changed, 79 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java index bd4e99d..22792da 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -31,7 +30,6 @@ import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.net.upload.UploadFileListener; -import com.dayu.pipirrapp.service.MyLocationService; import com.dayu.pipirrapp.tool.FullyGridLayoutManager; import com.dayu.pipirrapp.tool.GlideEngine; import com.dayu.pipirrapp.tool.ImageFileCompressEngine; @@ -229,6 +227,7 @@ existingPaths.add(uplodData.getFilePath()); } //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗� + Set<String> resultPaths = new HashSet<>(); for (LocalMedia media : result) { if (media.getWidth() == 0 || media.getHeight() == 0) { @@ -267,8 +266,19 @@ // 鎵ц涓婁紶鍥剧墖鐨勬搷浣� uplodeImg(uplodFileState); } - - + resultPaths.add(media.getCompressPath()); + } + //澶勭悊浠庣浉鍐岃繑鍥炴椂鍙栨秷鐨勫浘鐗囧鐞� + existingPaths.removeAll(resultPaths); + if (!existingPaths.isEmpty()) { + for (String path : existingPaths) { + for (UplodFileState uplodFileState : uplodFileStates) { + if (path.equals(uplodFileState.getFilePath())) { + uplodFileState.getThisCall().cancel(); + uplodFileStates.remove(uplodFileState); + } + } + } } runOnUiThread(new Runnable() { @Override @@ -341,16 +351,7 @@ * 寮�濮嬪畾浣嶇浉鍏抽�昏緫 */ private void startLocation() { - if (!ServiceUtils.isServiceRunning(this, MyLocationService.class)) { - Intent location = new Intent(this, MyLocationService.class); - location.putExtra("isSingle", true); - //寮�鍚畾浣� - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startForegroundService(location); - } else { - startService(location); - } - } + ServiceUtils.startLocationService(this, true); //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver); } diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java index 5b27f2b..2d796c5 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -30,7 +29,6 @@ import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.net.upload.UploadFileListener; -import com.dayu.pipirrapp.service.MyLocationService; import com.dayu.pipirrapp.tool.FullyGridLayoutManager; import com.dayu.pipirrapp.tool.GlideEngine; import com.dayu.pipirrapp.tool.ImageFileCompressEngine; @@ -227,10 +225,13 @@ * @param result */ private void analyticalSelectResults(ArrayList<LocalMedia> result) { + //鑾峰彇褰撳墠uplodFileStates鎵�鏈夌殑鍥剧墖鍦板潃 Set<String> existingPaths = new HashSet<>(); for (UplodFileState uplodData : uplodFileStates) { existingPaths.add(uplodData.getFilePath()); } + //鑾峰彇鍦≒ictureSelector鐨勭浉鍐屾椂鍙栨秷閫変腑鐨勫浘鐗� + Set<String> resultPaths = new HashSet<>(); for (LocalMedia media : result) { if (media.getWidth() == 0 || media.getHeight() == 0) { if (PictureMimeType.isHasImage(media.getMimeType())) { @@ -269,7 +270,19 @@ uplodeImg(uplodFileState); } - + resultPaths.add(media.getCompressPath()); + } + //澶勭悊浠庣浉鍐岃繑鍥炴椂鍙栨秷鐨勫浘鐗囧鐞� + existingPaths.removeAll(resultPaths); + if (!existingPaths.isEmpty()) { + for (String path : existingPaths) { + for (UplodFileState uplodFileState : uplodFileStates) { + if (path.equals(uplodFileState.getFilePath())) { + uplodFileState.getThisCall().cancel(); + uplodFileStates.remove(uplodFileState); + } + } + } } runOnUiThread(new Runnable() { @Override @@ -343,16 +356,7 @@ * 寮�濮嬪畾浣嶇浉鍏抽�昏緫 */ private void startLocation() { - if (!ServiceUtils.isServiceRunning(this, MyLocationService.class)) { - Intent location = new Intent(this, MyLocationService.class); - location.putExtra("isSingle", true); - //寮�鍚畾浣� - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startForegroundService(location); - } else { - startService(location); - } - } + ServiceUtils.startLocationService(this,true); //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver); } diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java index d4f825f..fb357d8 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -5,8 +5,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; -import android.location.LocationManager; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -43,13 +41,13 @@ import com.dayu.pipirrapp.net.Constants; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.observer.MapFragmenObserver; -import com.dayu.pipirrapp.service.MyLocationService; import com.dayu.pipirrapp.tool.InspectionUtils; import com.dayu.pipirrapp.utils.CommonData; import com.dayu.pipirrapp.utils.CommonKeyName; import com.dayu.pipirrapp.utils.DateUtils; import com.dayu.pipirrapp.utils.MapJpgUtils; import com.dayu.pipirrapp.utils.MyLog; +import com.dayu.pipirrapp.utils.ServiceUtils; import com.dayu.pipirrapp.utils.SharedPreferencesHelper; import com.dayu.pipirrapp.utils.ToastUtil; import com.dayu.pipirrapp.utils.WebViewUtils; @@ -490,8 +488,7 @@ * @param inspectionState */ private void chageInspecState(int inspectionState) { - Intent location = new Intent(this.getActivity(), MyLocationService.class); - location.putExtra("isSingle", false); + //0娌℃湁寮�濮嬶紝1寮�濮嬶紝2鏆傚仠,3鍏抽棴 switch (inspectionState) { case InspectionUtils.NO_INSPECTION: @@ -500,21 +497,21 @@ binding.inspectButton.setText("宸�"); LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver); //鍏抽棴瀹氫綅 - this.getActivity().stopService(location); + ServiceUtils.stopLocationService(MapFragment.this.getContext()); break; case InspectionUtils.STAT_INSPECTION_ONCLICK: //娣诲姞鏂扮殑宸℃璁板綍 mInspectionBean = InspectionUtils.startInspection(this.getContext()); - startLocation(location); + startLocation(); break; case InspectionUtils.STAT_INSPECTION://1寮�濮� - startLocation(location); + startLocation(); break; case InspectionUtils.PAUSE_INSPECTION://鏆傚仠 try { //鍏抽棴瀹氫綅 - this.getActivity().stopService(location); + ServiceUtils.stopLocationService(MapFragment.this.getContext()); binding.stateText.setText("宸叉殏鍋滃贰妫�"); binding.inspectPause.setText("缁х画"); binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.inspect_rl_bg_color)); @@ -584,9 +581,9 @@ /** * 寮�濮嬪贰妫�鐨勭浉鍏抽�昏緫 * - * @param location + * @param */ - private void startLocation(Intent location) { + private void startLocation() { //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver); binding.inspectRL.setVisibility(View.VISIBLE); @@ -594,14 +591,9 @@ binding.inspectPause.setText("鏆傚仠"); binding.stateText.setText("宸插紑鍚贰妫�"); binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.base_blue)); - //寮�鍚畾浣� - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - this.getActivity().startForegroundService(location); - } else { - this.getActivity().startService(location); - } inspectionRequest = new InspectionRequest(); SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION); + ServiceUtils.startLocationService(MapFragment.this.getContext(), false); } diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/ServiceUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/ServiceUtils.java index 8bd80d5..c324ee3 100644 --- a/app/src/main/java/com/dayu/pipirrapp/utils/ServiceUtils.java +++ b/app/src/main/java/com/dayu/pipirrapp/utils/ServiceUtils.java @@ -2,6 +2,10 @@ import android.app.ActivityManager; import android.content.Context; +import android.content.Intent; +import android.os.Build; + +import com.dayu.pipirrapp.service.MyLocationService; /** * ServiceUtils - 鏈嶅姟鐩稿叧鐨勫叕鍏辨柟娉� @@ -28,4 +32,38 @@ } return false; } + + + /** + * 寮�鍚畾浣嶆湇鍔� + * + * @param context + * @param isSingle + */ + public static void startLocationService(Context context, boolean isSingle) { + if (!isServiceRunning(context, MyLocationService.class)) { + Intent location = new Intent(context, MyLocationService.class); + location.putExtra("isSingle", isSingle); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.startForegroundService(location); + } else { + context.startService(location); + } + } + } + + /** + * 鍏抽棴瀹氫綅鏈嶅姟 + * + * @param context + */ + public static void stopLocationService(Context context) { + try { + Intent location = new Intent(context, MyLocationService.class); + context.stopService(location); + } catch (Exception e) { + e.printStackTrace(); + } + } + } -- Gitblit v1.8.0