Java 在Android中跨整个应用程序共享内容

Java 在Android中跨整个应用程序共享内容,java,android,design-patterns,Java,Android,Design Patterns,我并不是要修复我的代码或其他什么,我只是在应用程序中的适当位置上遇到了问题。 我编写了一个增强蓝牙聊天功能的应用程序——我为这个在后台运行的蓝牙聊天服务。我会有更多这样的服务。基本上,我希望能够在整个应用程序中运行方法: 通过蓝牙聊天发送信息并等待回答 用NFC扫描RFID标签 用相机扫描条形码 等等 这些我都知道如何在一个活动中轻松完成。现在,我正在寻找一种解决方案,将其放入一个类似于全局类的东西中,这样我就可以在整个应用程序中调用这个方法,所以我不需要初始化任何东西,只需要-doSome

我并不是要修复我的代码或其他什么,我只是在应用程序中的适当位置上遇到了问题。 我编写了一个增强蓝牙聊天功能的应用程序——我为这个在后台运行的蓝牙聊天服务。我会有更多这样的服务。基本上,我希望能够在整个应用程序中运行方法:

  • 通过蓝牙聊天发送信息并等待回答
  • 用NFC扫描RFID标签
  • 用相机扫描条形码
等等

这些我都知道如何在一个活动中轻松完成。现在,我正在寻找一种解决方案,将其放入一个类似于全局类的东西中,这样我就可以在整个应用程序中调用这个方法,所以我不需要初始化任何东西,只需要-doSomething()就可以了。 我应该把这些东西放在哪里:

  • 在自定义活动类中(我的所有其他活动都将使用它)
  • 申请中
  • 还有别的吗
处理程序也是如此。基本上,对于蓝牙聊天,你必须让处理程序来监听接收到的信息——也就是把它放在哪里


我基本上是在寻找关于如何解决这个问题的建议

您可以有一个BaseActivity来扩展活动并将您的常用函数放在BaseActivity中,现在使用BaseActivity扩展所有其他活动

您的活动将提供这些功能

例如:

class BaseActivity extends activity{
...........

public void sendMsgViaBluetooth(String msg){
...........
}

}



class MyActivity extends BaseActivity{

<OnSomeEvent>{

sendMsgViaBluetooth(msg);
}

}
类BaseActivity扩展活动{
...........
public void sendmsgviabletooth(字符串msg){
...........
}
}
类MyActivity扩展了BaseActivity{
{
sendmsgviabletooth(msg);
}
}

我将创建一个带有一些静态方法的类,允许您获取处理不同功能的特定类的实例。您可以创建一个侦听器系统,其中多个活动可以为事件(如接收到的消息)注册它们自己。当主类收到某个内容时,它将遍历所有侦听器,并通知他们

否则,您也可以发送广播,让感兴趣的活动收听。但这里的一个问题是没有人在听,消息可能会丢失。当您自己处理它时,如果没有人在侦听,您可以将消息存储在队列中,并在新的侦听器注册时发送它们

我不同意这个想法。你的应用程序越大,这就越困难(例如,如果你想让一个片段也做一些事情,一个应该获得一些东西的服务,或者当你想实现其他需要扩展除活动以外的任何内容的类时,该怎么办)。

在你的应用程序范围内,数据/方法“跟随”你,创建一个扩展应用程序的类。您必须在清单中指定该类将是您的应用程序类

android:name="com.example.MyApplicationClass">
之后,可以调用getApplication()获取应用程序上下文并将其强制转换到类中

myAppContext = (MyApplicationClass)getApplication();

尽量避免单例模式。我在一个应用程序中做过一次,当应用程序变得足够大时,我的单件有时会被删除(从启动程序返回后恢复应用程序时)。即使应用程序长时间处于后台,应用程序上下文也应该保留数据。

我不是安卓程序员,但假设它与核心java相同,您可以创建静态方法来完成所有这一切,然后(如果您真的必须)执行一系列操作,这样您就不需要执行Class.doSomething();但这很少是明智的,你不应该做得太过分