我正在尝试构建我的第一个android应用程序。我有多个活动,我正在使用一个处理程序和一个AssetFileDescriptor来播放声音文件。
我的问题是,如何传递这些对象?我有一个活动,通过处理程序启动计时器,另一个通过处理程序停止计时器。我应该在活动之间传递这些对象,还是有另一种方式?
我不习惯Java,但我想知道我是否可以创建一个配置静态类或创建所有这些对象的东西,然后我的每个活动都将从这个静态配置类访问这些对象。然而,这有它自己的问题,因为为了调用getAssets()方法,我不能使用静态类("不能对非静态方法进行静态引用")
任何想法?
最简单的解决方案是将对象存储在Application类中,这里是关于使用Android Application类持久化数据的答案
另一个更高级的选择是使用Dagger。它是一个依赖注入框架,可以做很多很酷的事情,但有点难以运行(至少花了我一些时间来工作)。
Dagger允许像这样定义一个单例类:
@Singleton
public class MySingletonObject {
@Inject
MySingletonObject() {
...
}
}
当你在应用程序中需要它时:
public class SomeActivityOrFragment {
@Inject MySingletonObject mySingletonObject;
...
mySingletonObject.start();
}
public class SomeOtherActivityOrFragment {
@Inject MySingletonObject mySingletonObject;
...
mySingletonObject.stop();
}