Android:在BroadcastReceiver.onReceive()调用之间持久化对象

Android:在BroadcastReceiver.onReceive()调用之间持久化对象,android,broadcastreceiver,Android,Broadcastreceiver,我有一个应用程序,接收短信,并开始某些“工作”,现在这项工作是通过相机和其他一些第三方API完成的。因此,当我收到我的应用程序的适当启动消息(SMS)时,我开始工作,并一直持续到应用程序从远程设备接收到停止消息 接收方在manifest.xml文件中注册,否则可以正常工作 现在的问题是,我的应用程序在收到启动消息后可以正常启动工作,但当我在一段时间后收到停止消息时,我无法真正停止工作,因为我对相机和第三方API的句柄/对象引用都为空。我对他们两个都没有任何控制权,也不能让他们成为单身汉。所以我需

我有一个应用程序,接收短信,并开始某些“工作”,现在这项工作是通过相机和其他一些第三方API完成的。因此,当我收到我的应用程序的适当启动消息(SMS)时,我开始工作,并一直持续到应用程序从远程设备接收到停止消息

接收方在manifest.xml文件中注册,否则可以正常工作

现在的问题是,我的应用程序在收到启动消息后可以正常启动工作,但当我在一段时间后收到停止消息时,我无法真正停止工作,因为我对相机和第三方API的句柄/对象引用都为空。我对他们两个都没有任何控制权,也不能让他们成为单身汉。所以我需要在
BroadcastReceiver
的两次调用之间持久化这些对象引用,我无法找到正确的方法。现在,我刚刚创建了这个类的这两个静态成员,它工作得很好,但这并不是一个好的解决方案。处理这种情况的最好方法是什么?如何在
BroadcastReceiver
的多个
onReceive()
调用之间使用初始化的对象

如有任何帮助/建议,将不胜感激

蒂亚,
-Manish

您还可以在
ApplicationClass
中添加对象引用,即从
Application
类扩展而来的类。您的应用程序类将一直保留在内存中,直到任何
活动
服务
运行为止。只有在所有
活动
服务
被终止后,它才会被终止

我认为这是一个更好的方法,静态场。
但这也不是充分的证据。我也在搜索此问题。

您还可以在
ApplicationClass
中添加对象引用,即从
应用程序
类扩展而来的类。您的应用程序类将一直保留在内存中,直到任何
活动
服务
运行为止。只有在所有
活动
服务
被终止后,它才会被终止

我认为这是一个更好的方法,静态场。
但这也不是充分的证据。我也在搜索这个问题。

您不能使用该类的单例,但您可以创建一个普通类并将其设置为单例。该类有一个HashMap,并用一个键存储api和摄影机对象。当您需要停止特定任务时,您可以通过某个键找到它并通过该对象停止它们

当您启动任务时,请将该对象存储在该单例中,当您想要停止该任务时,请从hashmap中查找该对象并停止/处置该任务

我建议您创建一个单例对象volatile

private static volatile Utils _instance = null;


public static Utils Instance() {
    if (_instance == null) {
        synchronized (Utils.class) {
            _instance = new Utils();
        }
    }
    return _instance;
}

您不能在该类中使用单例,但可以创建一个普通类并使其成为单例。该类有一个HashMap,并用一个键存储api和摄影机对象。当您需要停止特定任务时,您可以通过某个键找到它并通过该对象停止它们

当您启动任务时,请将该对象存储在该单例中,当您想要停止该任务时,请从hashmap中查找该对象并停止/处置该任务

我建议您创建一个单例对象volatile

private static volatile Utils _instance = null;


public static Utils Instance() {
    if (_instance == null) {
        synchronized (Utils.class) {
            _instance = new Utils();
        }
    }
    return _instance;
}

我没有从“BroadcastReceiver”访问“Application”,此处没有活动。我没有从“BroadcastReceiver”访问“Application”,此处没有活动。让我试试这个。听起来很合理让我试试这个。听起来很合理