【问题标题】:Call a method when variable changed变量改变时调用方法
【发布时间】:2016-09-28 13:27:08
【问题描述】:

我一直在编程方面遇到这个大问题。我的情况如下:

我有我的 loadingActivity。这是我的开始活动,它应该在从互联网加载一些数据时显示某种艺术作品。

应用程序通过一个单独的类获取该数据,该类在 asyncTask 中加载一些 json 数据。现在我希望在加载和解析完成时通知我的 loadingActivity。我是怎么做到的。

我已经阅读了有关接口 changeListener 的信息,但无法将其转换为我的情况。

结构如下: 活动:InformationLoadActivity.class StandardClasses:GetWeatherJsonDataGetMyDatabaseJsonData 都扩展了我的 GetRawJsonData 来处理下载我的内容。

信息加载活动:

@Override
protected void onStart() {
    super.onStart();

    GetWeatherJsonData weatherData = new GetWeatherJsonData("http://api.openweathermap.org");
    weatherData.execute();
}

在解析完天气信息之后,我启动了GetMyDatabaseJsonData。在这个类中,我想通知我的InformationLoadActivity.class 加载和解析已完成,在这种情况下它可以跳转到另一个活动,我的MainActivity 会显示加载的内容。

【问题讨论】:

    标签: java android properties observable


    【解决方案1】:

    在您的 AsyncTask 的 postExecute 中编写代码以实现您想要的操作,即转到您的 MainActivity

    【讨论】:

    • 我不明白。我的 InformationLoadActivity 中有一个方法“openMainActivity”,我在其中制作了“startActivity(intent);”的东西。但是我如何在 GetMyDatabaseJsonData 中调用它。
    • 要生成一个 Intent 我是否需要我的 InformationLoadController 的实例?有了这个意图,我就可以改变我的 MainActivity
    • 为您的 GetMyDatabaseJsonData 类创建一个构造函数,该类接受 Acticity 作为参数。因此,当您启动此类实例时,您将需要提供您的活动上下文。现在在 onPostExecute 你可以编写你的逻辑去下一个活动。
    • 是的,我知道这个过程,但它不是有点低效吗?我必须通过我所有的 json 加载类来拉出我的 InformationLoadActivity。
    • 据我所知,这可能是一个解决方案。如果你有更好的解决方案显然去。 :)
    【解决方案2】:

    为什么不直接实现观察者模式?

    在您的情况下,GetWeatherJsonData 将是主题,并且操作将实现 Observer 接口。

    https://sourcemaking.com/design_patterns/observer/java/1

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多