解决反复注册监听的bug

This commit is contained in:
hehaibing-1996
2025-02-23 11:33:26 +08:00
parent ddfbe18624
commit f9d832ef6c
4 changed files with 21 additions and 3 deletions

View File

@ -3,6 +3,16 @@ var receiver = null;
//接收广播
export function recive(success, fail) {
//在所有页面注册监听前 如果当前应用存在监听 则取消广播监听
if (main && receiver) {
console.log("取消监听广播");
try {
main.unregisterReceiver(receiver);
} catch (e) {
console.error("取消广播监听时出错:", e);
}
}
// #ifdef APP
main = plus.android.runtimeMainActivity(); //获取activity
//创建自定义广播实例

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -44,12 +44,20 @@ if (uni.restoreGlobal) {
var main = null;
var receiver = null;
function recive(success, fail) {
if (main && receiver) {
formatAppLog("log", "at src/libs/Broadcast.js:8", "取消监听广播");
try {
main.unregisterReceiver(receiver);
} catch (e) {
formatAppLog("error", "at src/libs/Broadcast.js:12", "取消广播监听时出错:", e);
}
}
main = plus.android.runtimeMainActivity();
receiver = plus.android.implements("io.dcloud.feature.internal.reflect.BroadcastReceiver", {
onReceive: function(context, intent) {
plus.android.importClass(intent);
var action = intent.getAction();
formatAppLog("log", "at src/libs/Broadcast.js:13", "zhanglp", action);
formatAppLog("log", "at src/libs/Broadcast.js:23", "zhanglp", action);
var data;
switch (action) {
case "com.android.server.scannerservice.broadcast":
@ -57,7 +65,7 @@ if (uni.restoreGlobal) {
break;
case "com.service.scanner.data":
data = intent.getExtra("ScanCode");
formatAppLog("log", "at src/libs/Broadcast.js:21", "zhanglp", data.replace(/\n/, ""));
formatAppLog("log", "at src/libs/Broadcast.js:31", "zhanglp", data.replace(/\n/, ""));
break;
case "android.intent.action.SCANRESULT":
data = intent.getExtra("value");
@ -129,7 +137,7 @@ if (uni.restoreGlobal) {
main.registerReceiver(receiver, filter);
}
function unregisterReceiver() {
formatAppLog("log", "at src/libs/Broadcast.js:114", "取消监听广播");
formatAppLog("log", "at src/libs/Broadcast.js:124", "取消监听广播");
main.unregisterReceiver(receiver);
}
function saveConfig(key, value) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB