【问题标题】:Passing objects between Android Activities, or config file?在 Android 活动或配置文件之间传递对象?
【发布时间】:2014-05-09 20:50:49
【问题描述】:

我正在尝试构建我的第一个 Android 应用程序。我有多个活动,我正在使用 Handler 和 AssetFileDescriptor 来播放声音文件。

我的问题是,我怎样才能传递这些对象?我有一个 Activity 通过处理程序启动计时器,另一个通过处理程序停止计时器。我应该在活动之间传递这些对象,还是有其他方法?

我不习惯 Java,但我想知道是否可以创建一个配置静态类或创建所有这些对象的东西,然后我的每个活动都会从这个静态配置类访问这些对象。但是,这有其自身的问题,因为为了调用方法 getAssets(),我不能使用静态类(“不能对非静态方法进行静态引用。”)

有什么想法吗?

【问题讨论】:

  • 如果状态需要在多个活动中保持不变,听起来您应该使用Service 来处理计时器。

标签: java android android-activity config


【解决方案1】:

这个最简单的解决方案是将对象存储在 Application 类中,这是关于主题 Using the Android Application class to persist data 的 SO 答案

另一个更高级的选项是使用Dagger。这是一个依赖注入框架,可以做很多很酷的事情,但运行起来有点困难(至少花了我一些时间才能开始工作)。

Dagger 可以像这样定义一个 Singleton 类:

@Singleton
public class MySingletonObject {

    @Inject
    MySingletonObject() {
        ...
    }
}

并且无论何时您在应用中需要它:

public class SomeActivityOrFragment {

    @Inject MySingletonObject mySingletonObject;
    ...
    mySingletonObject.start();
}

public class SomeOtherActivityOrFragment {

    @Inject MySingletonObject mySingletonObject;

    ...
    mySingletonObject.stop();

}

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2023-03-23
    相关资源
    最近更新 更多