gpt4 book ai didi

android - 如何从多任务 Pane 中删除安装/卸载接收器以杀死应用程序/强制关闭应用程序?

转载 作者:行者123 更新时间:2023-11-30 01:41:24 24 4
gpt4 key购买 nike

我在 react-native 中编写了一个插件,用于在安装新应用程序或卸载现有应用程序(已卸载应用程序的包名称)时将事件发送到 Javascript(已安装应用程序的包名称)。

我面临的问题是,当我终止应用程序(从多任务 Pane 中删除)时,接收器将继续监听安装/卸载事件。这表示不幸的是该应用程序已关闭。

请找到我写的代码如下:

public class MyReceiver extends BroadcastReceiver {

Context context;
private static AppListModule module;

public MyReceiver(AppListModule module) {
this.module = module;
}

public MyReceiver() {}

@Override
public void onReceive(Context context, Intent intent) {

this.context = context;

// This condition will be called when package removed
if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
String packageName = intent.getDataString();
Log.e(" BroadcastReceiver ", "onReceive called "
+ " PACKAGE_REMOVED ");

WritableMap params = Arguments.createMap();
params.putString("message", packageName);
this.module.sendEvent(this.module.getReactApplicationContextModule(), "InstallUninstall", params);
}
// This condition will be called when package installed
else if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
String packageName = intent.getDataString();
Log.e(" BroadcastReceiver ", "onReceive called " + "PACKAGE_ADDED");
WritableMap params = Arguments.createMap();
params.putString("message", packageName);
if(this.module!=null) {
this.module.sendEvent(this.module.getReactApplicationContextModule(), "InstallUninstall", params);
}
}
}

我唯一的问题是当我终止应用程序时如何删除接收器。请在这方面提供帮助。

设置MyReceiver.java

  public void setData(ReactApplicationContext mcontext, AppListModule module) {
context = mcontext;
this.module = module;
this.eventsReceiver = new MyReceiver(this.module);
}

最佳答案

您需要保留对 MyReceiver 的引用某处,以便您可以使用它来注销它。我假设您正在创建和注册 MyReceiverActivity .如果是这样,您应该可以在 onDestroy() 中注销它。 :

context.unregisterReceiver(myReceiver);

您需要确保您调用了unregisterReceiver()同样Context你曾经调用registerReceiver() .


此外,作为安全网,您应该检查 this.module != nullMyReceiver.onReceive() .如果是null , 忽略对 onReceive() 的调用什么都不做。这将防止您的应用程序崩溃。

关于android - 如何从多任务 Pane 中删除安装/卸载接收器以杀死应用程序/强制关闭应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34464603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com