From c64da51ae481dfc2a25e5a6e39bb94f22d65428a Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 10 一月 2020 13:33:09 +0800
Subject: [PATCH] s

---
 lib/src/main/java/com/anyun/exam/lib/RemoteService.java |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
index f8b7133..c509eb4 100644
--- a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
+++ b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
@@ -68,7 +68,14 @@
         Log.i(TAG,"onCreate()");
         speaker = new Speaker(getApplicationContext());
 
-        startNative();
+        new Thread(new StartNative()).start();
+    }
+
+    class StartNative implements Runnable {
+        @Override
+        public void run() {
+            startNative();
+        }
     }
 
     @Override
@@ -78,23 +85,23 @@
         mIsServiceDestroyed.set(true);
     }
 
-    private void onMessageArrived(int cmd, String json){
+    private void onMessageArrived(int cmd, String json) {
         int N = mListenerList.getRegisteredCallbackCount();
 
-        mListenerList.beginBroadcast();
-
-        for (int i = 0; i < N; i++) {
-            mListener  = mListenerList.getBroadcastItem(i);
-            if (mListener != null){
-                try {
-                    mListener.onMessageArrived(cmd, json);
-                } catch (RemoteException e) {
-                    e.printStackTrace();
+        synchronized(this) {
+            mListenerList.beginBroadcast();
+            for (int i = 0; i < N; i++) {
+                mListener = mListenerList.getBroadcastItem(i);
+                if (mListener != null) {
+                    try {
+                        mListener.onMessageArrived(cmd, json);
+                    } catch (RemoteException e) {
+                        e.printStackTrace();
+                    }
                 }
             }
-
+            mListenerList.finishBroadcast();
         }
-        mListenerList.finishBroadcast();
     }
 
     public void SendMsgToMainProc(int cmd, String value) {

--
Gitblit v1.8.0