Browse Source

## [1.0.8] version 8 - 2021-10-18
### CHANGE
- 优化参数更新,修复一处概率性发生anr问题异常

weizhengliang 3 years ago
parent
commit
1548acf72e

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -49,6 +49,7 @@
                 <action android:name="android.intent.action.MAIN"/>
                 <action android:name="android.intent.action.MAIN"/>
 
 
                 <category android:name="android.intent.category.LAUNCHER"/>
                 <category android:name="android.intent.category.LAUNCHER"/>
+                <!--<category android:name="android.intent.category.HOME"/>-->
             </intent-filter>
             </intent-filter>
         </activity>
         </activity>
 
 

+ 2 - 2
build.gradle

@@ -47,12 +47,12 @@ buildscript {
     /**
     /**
      * APP版本码
      * APP版本码
      */
      */
-    ext.app_version_code = 7
+    ext.app_version_code = 8
 
 
     /**
     /**
      * APP版本号
      * APP版本号
      */
      */
-    ext.app_version = "1.0.7"
+    ext.app_version = "1.0.8"
 
 
     /**
     /**
      * 项目依赖库
      * 项目依赖库

+ 39 - 11
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -43,7 +43,6 @@ import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.push
 import com.wdkl.ncs.android.lib.utils.push
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.lib.widget.SOSDialog
 import com.wdkl.ncs.android.middleware.common.SipStatus
 import com.wdkl.ncs.android.middleware.common.SipStatus
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.NurseHomeActivityContract
 import com.wdkl.ncs.android.middleware.logic.contract.nursehome.NurseHomeActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.NurseHomeActivityPresenter
 import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.NurseHomeActivityPresenter
@@ -68,8 +67,9 @@ import kotlinx.android.synthetic.main.right_list.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 import org.greenrobot.eventbus.ThreadMode
-import java.lang.RuntimeException
 import java.util.*
 import java.util.*
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 
 
 /**
 /**
  * 首页Activity
  * 首页Activity
@@ -152,7 +152,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
 
 
         presenter.loadTcpData()
         presenter.loadTcpData()
 
 
-        regReceiver()//注册时间广播
+        regReceiver()//注册广播
 
 
         if(Constants.hospital_name!=null&& !Constants.hospital_name.equals("")){
         if(Constants.hospital_name!=null&& !Constants.hospital_name.equals("")){
             name_of_organization_tv.text = Constants.hospital_name+ Constants.part_name
             name_of_organization_tv.text = Constants.hospital_name+ Constants.part_name
@@ -183,6 +183,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
 
 
         //初始化事件提醒window
         //初始化事件提醒window
         incidentWindow = IncidentWindow(this.activity)
         incidentWindow = IncidentWindow(this.activity)
+
+        startScheduledExecutor()
     }
     }
 
 
     private fun connectSocket() {
     private fun connectSocket() {
@@ -198,9 +200,9 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
     private fun regReceiver() {
     private fun regReceiver() {
         receiver = TimeReceiver()
         receiver = TimeReceiver()
         var intentFilter = IntentFilter()
         var intentFilter = IntentFilter()
-        intentFilter.addAction(Intent.ACTION_TIME_TICK)
-        intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED)
-        intentFilter.addAction(Intent.ACTION_TIME_CHANGED)
+        //intentFilter.addAction(Intent.ACTION_TIME_TICK)
+        //intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED)
+        //intentFilter.addAction(Intent.ACTION_TIME_CHANGED)
         intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION)
         intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION)
         //手柄状态监听
         //手柄状态监听
         intentFilter.addAction(Constants.HOOK_OFF)
         intentFilter.addAction(Constants.HOOK_OFF)
@@ -633,16 +635,42 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
         beginTransaction().func().commit()
         beginTransaction().func().commit()
     }
     }
 
 
-    /**
-     * 更新时间广播
+    /*
+    * 启动一个定时任务执行检测
      */
      */
+    private fun startScheduledExecutor() {
+        val timerTask: TimerTask = object : TimerTask() {
+            override fun run() {
+                updateTime(false)
+                runOnUiThread {
+                    updateNetState()
+                    updateTcpState()
+
+                    //sip状态
+                    if (SocketManager.getInstance().userState == 1) {
+                        view_title_layout_tv_point.setBackgroundResource(R.color.green)
+                    } else {
+                        view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
+                    }
+                }
+
+                //当前不在通话中且laterRestart=true则重启app
+                if (Constants.laterRestart && !DeviceChannel.calling) {
+                    AppUpdateHelper.restartApp(activity)
+                }
+            }
+        }
+        val executor = Executors.newSingleThreadScheduledExecutor()
+        executor.scheduleAtFixedRate(timerTask, 100, 90, TimeUnit.SECONDS)
+    }
+
     inner class TimeReceiver: BroadcastReceiver() {
     inner class TimeReceiver: BroadcastReceiver() {
         override fun onReceive(context: Context, intent: Intent) {
         override fun onReceive(context: Context, intent: Intent) {
             if (intent.action == Intent.ACTION_TIME_TICK
             if (intent.action == Intent.ACTION_TIME_TICK
                     || intent.action == Intent.ACTION_TIME_CHANGED
                     || intent.action == Intent.ACTION_TIME_CHANGED
                     || intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
                     || intent.action == Intent.ACTION_TIMEZONE_CHANGED) {
 
 
-                updateTime(false)
+                /*updateTime(false)
                 updateNetState()
                 updateNetState()
                 updateTcpState()
                 updateTcpState()
 
 
@@ -656,7 +684,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
                 //当前不在通话中且laterRestart=true则重启app
                 //当前不在通话中且laterRestart=true则重启app
                 if (Constants.laterRestart && !DeviceChannel.calling) {
                 if (Constants.laterRestart && !DeviceChannel.calling) {
                     AppUpdateHelper.restartApp(activity)
                     AppUpdateHelper.restartApp(activity)
-                }
+                }*/
             } else if (intent.action == Constants.HOOK_ON) {
             } else if (intent.action == Constants.HOOK_ON) {
                 Log.e(TAG,"手柄放下 ")
                 Log.e(TAG,"手柄放下 ")
                 Constants.hookOn = true
                 Constants.hookOn = true
@@ -784,7 +812,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
             //白天结束时间戳
             //白天结束时间戳
             var endOfDayTimeStamp = TimeTransition.dateToStamp(date+" "+SettingConfig.getEndOfDay(activity)+":00")
             var endOfDayTimeStamp = TimeTransition.dateToStamp(date+" "+SettingConfig.getEndOfDay(activity)+":00")
 
 
-            Log.e(TAG,"dayStartTimeStamp: " + dayStartTimeStamp + "----endOfDayTimeStamp: " + endOfDayTimeStamp)
+            Log.e(TAG,"dayStartTimeStamp: " + dayStartTimeStamp + "----endOfDayTimeStamp: " + endOfDayTimeStamp + "----currentTimestamp: " + currentTimestamp)
 
 
             val curInday = dayStartTimeStamp < currentTimestamp && currentTimestamp < endOfDayTimeStamp
             val curInday = dayStartTimeStamp < currentTimestamp && currentTimestamp < endOfDayTimeStamp
             if (curInday) {
             if (curInday) {

+ 1 - 1
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/led/LedC2MManager.java

@@ -97,7 +97,7 @@ public class LedC2MManager extends LedManager {
             }
             }
         };
         };
         ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
         ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
-        executor.scheduleAtFixedRate(timerTask,0,60, TimeUnit.SECONDS);
+        executor.scheduleAtFixedRate(timerTask,60,60, TimeUnit.SECONDS);
     }
     }
 
 
     @Override
     @Override

+ 21 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/AnrFcExceptionUtil.java

@@ -28,6 +28,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
+import java.util.TimeZone;
 
 
 import okhttp3.Call;
 import okhttp3.Call;
 import okhttp3.Callback;
 import okhttp3.Callback;
@@ -189,6 +190,7 @@ public class AnrFcExceptionUtil implements Thread.UncaughtExceptionHandler {
         try {
         try {
             long timestamp = System.currentTimeMillis();
             long timestamp = System.currentTimeMillis();
             String time = format.format(new Date());
             String time = format.format(new Date());
+            format.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             String fileName = "crash-" + time + "-" + timestamp + ".txt";
             String fileName = "crash-" + time + "-" + timestamp + ".txt";
             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                 String path = Environment.getExternalStorageDirectory() + "/crash/";
                 String path = Environment.getExternalStorageDirectory() + "/crash/";
@@ -235,6 +237,25 @@ public class AnrFcExceptionUtil implements Thread.UncaughtExceptionHandler {
                 mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1500, mPendingIntent);
                 mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1500, mPendingIntent);
                 android.os.Process.killProcess(android.os.Process.myPid());*/
                 android.os.Process.killProcess(android.os.Process.myPid());*/
 
 
+                //记录anr发生时间
+                /*try {
+                    long timestamp = System.currentTimeMillis();
+                    String time = format.format(new Date());
+                    format.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                    String fileName = "anr-" + time + "-" + timestamp + ".txt";
+                    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+                        String path = Environment.getExternalStorageDirectory() + "/anr/";
+                        File dir = new File(path);
+                        if (!dir.exists()) {
+                            dir.mkdirs();
+                        }
+                        FileOutputStream fos = new FileOutputStream(path + fileName);
+                        fos.write(fileName.getBytes());
+                        fos.close();
+                    }
+                } catch (Exception e) {
+                }*/
+
                 Log.d("anr", "Anr restart app...");
                 Log.d("anr", "Anr restart app...");
                 restartApp();
                 restartApp();
             }
             }

+ 4 - 0
readme.md

@@ -25,6 +25,10 @@
 在发布新版本时,可以直接将Unreleased区块中的内容移动至新发 布版本的描述区块就可以了
 在发布新版本时,可以直接将Unreleased区块中的内容移动至新发 布版本的描述区块就可以了
 
 
 ---
 ---
+## [1.0.8] version 8 - 2021-10-18
+### CHANGE
+- 优化参数更新,修复一处概率性发生anr问题异常
+
 ## [1.0.7] version 7 - 2021-10-12
 ## [1.0.7] version 7 - 2021-10-12
 ### CHANGE
 ### CHANGE
 - 优化通话异常处理
 - 优化通话异常处理