瀏覽代碼

界面退出时,取消注册的监听

liuzhenxing1118 2 年之前
父節點
當前提交
91400f1ed0
共有 1 個文件被更改,包括 23 次插入5 次删除
  1. 23 5
      app/src/main/java/com/xplora/xponboarding/Activity/SimInstallActivity.java

+ 23 - 5
app/src/main/java/com/xplora/xponboarding/Activity/SimInstallActivity.java

@@ -14,6 +14,9 @@ import com.xplora.xponboarding.R;
 import com.xplora.xponboarding.broadcast.SimStateReceiver;
 
 public class SimInstallActivity extends BaseActivity {
+
+    public SimStateReceiver mListener = null;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         Log.d(TAG, "onCreate: ");
@@ -37,28 +40,36 @@ public class SimInstallActivity extends BaseActivity {
 
     public void initBroadcast() {
         //sim 卡状态变化
-        SimStateReceiver listener = new SimStateReceiver();
+        mListener = new SimStateReceiver();
         IntentFilter intentFilter = new IntentFilter(SimStateReceiver.ACTION_SIM_STATE_CHANGED);
-        registerReceiver(listener, intentFilter);
+        registerReceiver(mListener, intentFilter);
 
-        listener.setOnSimStateListener(new SimStateReceiver.OnSimStateChangeListener() {
+        mListener.setOnSimStateListener(new SimStateReceiver.OnSimStateChangeListener() {
             @Override
             public void onReceiveSimStateChangeBroadcast(int status) {
                 if (status == 1) {
                     //无 sim, 停留本界面
                 } else if (status == 4){
-                    unregisterReceiver(listener);
+                    unregisterSimStateReceiver();
                     Intent intent = new Intent(SimInstallActivity.this, SimPinLockedActivity.class);
                     startActivity(intent);
                     finish();
                 } else {
-                    unregisterReceiver(listener);
+                    unregisterSimStateReceiver();
                     startQRCode();
                 }
             }
         });
     }
 
+    public void unregisterSimStateReceiver() {
+        Log.d(TAG, "unregisterSimStateReceiver: ");
+        if (mListener != null) {
+            unregisterReceiver(mListener);
+            mListener = null;
+        }
+    }
+
     public void restart() {
         Log.d(TAG, "restart: ");
         restartEx();
@@ -81,4 +92,11 @@ public class SimInstallActivity extends BaseActivity {
         intent.setComponent(componet);
         sendBroadcast(intent, "com.xplora.receiver");
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        Log.d(TAG, "onDestroy: ");
+        unregisterSimStateReceiver();
+    }
 }