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