From: kfl_614 Date: Tue, 24 Mar 2020 10:50:00 +0000 (+0800) Subject: 1.修改血压测量完成后息屏后不会退出APP的bug。 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=e3cca21a25ed091f2abc962fd18504dac6fd3d44;p=IcBlood.git 1.修改血压测量完成后息屏后不会退出APP的bug。 2.修复IcLog e 空指针的bug --- diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 742cfb2..eb38374 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + package="com.ic.blood" + android:sharedUserId="android.uid.system"> diff --git a/app/src/main/java/com/ic/blood/BloodActivity.java b/app/src/main/java/com/ic/blood/BloodActivity.java index 3dab665..74a975c 100644 --- a/app/src/main/java/com/ic/blood/BloodActivity.java +++ b/app/src/main/java/com/ic/blood/BloodActivity.java @@ -5,12 +5,19 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; import android.os.Bundle; import com.ic.blood.fragment.BloodFragment; +import com.ic.blood.util.IcLog; public class BloodActivity extends AppCompatActivity { + private static final String TAG = "BloodActivity"; + private FragmentManager fragmentManager; @Override @@ -19,6 +26,10 @@ public class BloodActivity extends AppCompatActivity { setContentView(R.layout.activity_blood); fragmentManager = getSupportFragmentManager(); commitFragment(BloodFragment.newInstance()); + + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_SCREEN_OFF); + registerReceiver(screenOnOffReceiver, intentFilter); } private void commitFragment(Fragment fragment) { @@ -27,5 +38,18 @@ public class BloodActivity extends AppCompatActivity { fragmentTransaction.commit(); } + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(screenOnOffReceiver); + } + private BroadcastReceiver screenOnOffReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { + finish(); + } + } + }; } diff --git a/app/src/main/java/com/ic/blood/fragment/BloodFragment.java b/app/src/main/java/com/ic/blood/fragment/BloodFragment.java index 8bae956..1fb7923 100644 --- a/app/src/main/java/com/ic/blood/fragment/BloodFragment.java +++ b/app/src/main/java/com/ic/blood/fragment/BloodFragment.java @@ -8,6 +8,8 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import android.os.Handler; +import android.os.Message; import android.os.PowerManager; import android.view.LayoutInflater; import android.view.View; @@ -21,6 +23,7 @@ import com.ic.blood.model.BloodCheckModel; import com.ic.blood.util.IcLog; import java.io.IOException; +import java.lang.ref.WeakReference; import pl.droidsonroids.gif.GifDrawable; import pl.droidsonroids.gif.GifImageView; @@ -42,6 +45,8 @@ public class BloodFragment extends Fragment { private GifDrawable gifFromAssets; + private DelayExecuteHandler delayHandler; + public static BloodFragment newInstance() { return new BloodFragment(); } @@ -57,6 +62,7 @@ public class BloodFragment extends Fragment { super.onCreate(savedInstanceState); mApp = (BloodApp) mContext.getApplicationContext(); initWakeLock(mContext); + delayHandler = new DelayExecuteHandler(this); } @Override @@ -79,8 +85,6 @@ public class BloodFragment extends Fragment { mWakeLock.acquire(); } - //bloodModel.startCheckBlood(); - gifFromAssets.start(); } @@ -95,30 +99,24 @@ public class BloodFragment extends Fragment { private void initBloodModel() { BloodCheckModel.Factory factory = new BloodCheckModel.Factory(mApp); - bloodModel= new ViewModelProvider(this, factory).get(BloodCheckModel.class); + bloodModel = new ViewModelProvider(this, factory).get(BloodCheckModel.class); bloodModel.getObsBloodValue().observe(getViewLifecycleOwner(), value -> { bloodBinding.setIsShowTips(false); bloodBinding.setHighValue(value[0]); bloodBinding.setLowValue(value[1]); bloodBinding.setHeartValue(value[2]); + delayHandler.sendMessageDelayed(new Message(),6000); }); - bloodModel.getObsTipsInfo().observe(getViewLifecycleOwner(),tips ->{ + bloodModel.getObsTipsInfo().observe(getViewLifecycleOwner(), tips -> { bloodBinding.setIsShowTips(true); bloodBinding.setTopTips(tips[0]); bloodBinding.setBottomTips(tips[1]); }); - bloodModel.getObsCheckEnd().observe(getViewLifecycleOwner(),end ->{ - switch (end){ - case 1: - IcLog.i(TAG,"Release WakeLock"); - releaseWakeLock(); - break; - case 2: - ((BloodActivity)mContext).finish(); - break; - } + bloodModel.getObsCheckEnd().observe(getViewLifecycleOwner(), end -> { + IcLog.i(TAG, "finish"); + ((BloodActivity) mContext).finish(); }); } @@ -131,6 +129,7 @@ public class BloodFragment extends Fragment { } private void releaseWakeLock() { + IcLog.i(TAG, "Release WakeLock"); if (mWakeLock != null) { mWakeLock.release(); } @@ -151,7 +150,7 @@ public class BloodFragment extends Fragment { @Override public void onDestroy() { super.onDestroy(); - IcLog.i(TAG,"onDestroy"); + IcLog.i(TAG, "onDestroy"); bloodModel.unregisterScreenReceiver(); bloodModel = null; @@ -159,5 +158,21 @@ public class BloodFragment extends Fragment { if (gifFromAssets != null) { gifFromAssets.recycle(); } + + delayHandler=null; + } + + private static class DelayExecuteHandler extends Handler { + private final WeakReference mFragment; + + public DelayExecuteHandler(BloodFragment fragment) { + mFragment = new WeakReference(fragment); + } + + @Override + public void dispatchMessage(@NonNull Message msg) { + super.dispatchMessage(msg); + mFragment.get().releaseWakeLock(); + } } } diff --git a/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java b/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java index d0288f9..6bbc7da 100644 --- a/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java +++ b/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java @@ -36,8 +36,6 @@ public class BloodPresenter { private SparseArray mTipsSpares; - private Handler mHandler; - public BloodPresenter(Context context) { this.mContext = context; mTipsSpares = new SparseArray(); @@ -53,8 +51,6 @@ public class BloodPresenter { mObsBloodValue = new MutableLiveData<>(); mObsTipsInfo = new MutableLiveData<>(); mObsCheckEnd = new MutableLiveData<>(); - - mHandler = new Handler(); } public MutableLiveData getObsBloodValue() { @@ -70,30 +66,23 @@ public class BloodPresenter { } public void registerScreenReceiver() { - ServiceUtil.bindServiceUtil(mContext, "com.ic.action.WORK_SERVICE", connection, mContext.getPackageName()); - - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Intent.ACTION_SCREEN_OFF); - mContext.registerReceiver(screenOnOffReceiver, intentFilter); } public void unregisterScreenReceiver() { - - mContext.unregisterReceiver(screenOnOffReceiver); - try { - mService.unregisterCallback(bloodInterface); + if(mService != null){ + mService.unregisterCallback(bloodInterface); + } ServiceUtil.unBindServiceUtil(mContext, connection); } catch (Exception e) { - IcLog.e(TAG, e.getMessage()); + IcLog.e(TAG, "unregisterScreenReceiver",e); }finally { mService=null; bloodInterface=null; } connection = null; - mHandler = null; } public void startCheckBlood() { @@ -101,7 +90,7 @@ public class BloodPresenter { try { mService.startCheckBlood(); } catch (Exception e) { - IcLog.e(TAG, e.getMessage()); + IcLog.e(TAG, "startCheckBlood",e); } } } @@ -111,7 +100,7 @@ public class BloodPresenter { try { mService.stopCheckBlood(); } catch (Exception e) { - IcLog.e(TAG, e.getMessage()); + IcLog.e(TAG, "stopCheckBlood",e); } } } @@ -132,15 +121,7 @@ public class BloodPresenter { } } - private BroadcastReceiver screenOnOffReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) { - IcLog.i(TAG, "灭屏了"); - mObsCheckEnd.setValue(2); - } - } - }; + private ServiceConnection connection = new ServiceConnection() { @@ -151,7 +132,7 @@ public class BloodPresenter { mService.registerCallback(bloodInterface); startCheckBlood(); } catch (Exception e) { - IcLog.e(TAG, e.getMessage()); + IcLog.e(TAG, "ServiceConnection",e); } } @@ -164,7 +145,6 @@ public class BloodPresenter { @Override public void updateBloodCheckResult(int high, int low, int heart) throws RemoteException { updateBoolValue(high, low, heart); - mHandler.postDelayed(() -> mObsCheckEnd.postValue(1), 10 * 1000); } @Override diff --git a/app/src/main/java/com/ic/blood/util/CrashHandler.java b/app/src/main/java/com/ic/blood/util/CrashHandler.java index 6272aae..e9fd03f 100644 --- a/app/src/main/java/com/ic/blood/util/CrashHandler.java +++ b/app/src/main/java/com/ic/blood/util/CrashHandler.java @@ -193,10 +193,10 @@ public class CrashHandler implements Thread.UncaughtExceptionHandler { sb.append("\n\n"); try { - String fileName = "IcHardware-" + dateFormatDate.format(new Date()) + ".log"; + String fileName = "IcBlood-" + dateFormatDate.format(new Date()) + ".log"; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { - File dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/crash/IcHardware"); + File dir = new File(Environment.getExternalStorageDirectory().getPath(), "Android/ic/crash/IcBlood"); String path = dir.getPath(); if (!dir.exists()) { dir.mkdirs(); diff --git a/app/src/main/java/com/ic/blood/util/IcLog.java b/app/src/main/java/com/ic/blood/util/IcLog.java index 84b870e..8417ff1 100644 --- a/app/src/main/java/com/ic/blood/util/IcLog.java +++ b/app/src/main/java/com/ic/blood/util/IcLog.java @@ -2,6 +2,8 @@ package com.ic.blood.util; import android.util.Log; +import com.ic.blood.BuildConfig; + /** * @author RyanLee * @date 2018/2/2 @@ -10,7 +12,7 @@ import android.util.Log; public class IcLog { private static final String DOT = "."; - private static boolean isDebug = true; + private static boolean isDebug = BuildConfig.DEBUG; private static String tagHead = ""; public static void v(String tag, String msg) { @@ -37,9 +39,9 @@ public class IcLog { } } - public static void e(String tag, String msg) { + public static void e(String tag, String msg,Throwable tr) { if (isDebug) { - Log.e(mergeHeadTag(tag), msg); + Log.e(mergeHeadTag(tag), msg,tr); } } diff --git a/app/version_code.properties b/app/version_code.properties index 463e77d..8ce91d1 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Mon Mar 23 19:02:46 CST 2020 -VERSION_CODE=13 +#Tue Mar 24 16:42:06 CST 2020 +VERSION_CODE=14