2016-10-05 92 views
-1

让“”是其中正在逐渐从服务器响应的第一活性和保存在共享偏好/(使用意图),然后发送到第二活性“”和表示textview中的值。现在我的问题是,是否有可能刷新第二个活动中的第一个活动而不回到第一个活动,因为服务器可能会更新一个特定的值,以便在第二个活动中显示的值应该自动更改(使用定时器/线)。 请给我一个主意。提前致谢。刷新先前的活动在当前活动

例如: 汽车的价值= 20,一等车的汽车= 30,我在二等车上展示它。 ,但几分钟/秒后汽车值突然改变为汽车= 50,现在我不得不在第二次活动中更新一个值。

+0

你所要做的是使用服务而不是活动来实现。 –

+0

没有服务。只有活动 –

+0

使用带定时器的服务,设置时间间隔调用服务并获得响应。 –

回答

2

你打算做什么并不是一个好习惯。当您进行第二项活动时,第一项活动将停止。

你最好有第三堂课来处理你的网络资料,然后从任何地方随时随地访问第三堂课。

+0

谢谢@amir Ziarati,请你简单解释一下(示例代码)以便轻松理解。 –

+0

例如您可以创建一个名为“NetworkInteracator”的第三个类,并将一些静态方法用于获取网络数据并将其作为模型返回。您可以创建一个回调类并将该回调的实现发送给这些方法,以便只要异步任务完成,他们就会以返回数据作为回调参数来调用您的回调。 –

+0

使用asynchHttp库https://guides.codepath.com/android/Using-Android-Async-Http-Client –

0

可以定义静态变量和更新用时使用该变量,或拨打startActivityForResult()和更新值onActivityResult()

+0

我试过你的想法,但我的应用程序崩溃。 –

+0

你可以给我发送错误,因为你只修改变量值。 –

+0

不要使用静态,它可能导致内存泄漏,不是一个好主意。 –

0

而是共享首选项,你可以使用SQLite数据库,并使用内容提供商的机制来更新你的UI。也就是说,你可以使用光标加载器来更新你的数据。

制作活动扩展游标加载器并使用回调来更新活动A中的用户界面。当数据在SQLite数据库中被修改后,它会自动反映在用户界面中,前提是您使用游标更新UI。

我通常使用this库来进行数据库相关操作和使用游标加载器进行UI更新。当服务器数据不断变化时,这种方法是最模块化的方法。 Here是官方文档。

+0

我建议你迁移到领域,它已经在内置的datasetchange监听器。而且比SQLite –

1

你可以在Singleton类中存储你的模型类,所以无论什么值得到更新,只需更新你的单例类,当你回到活动A调用你的initview函数,让你的屏幕刷新。

+0

更经济,更容易使用,如果我进入第二个活动,我不会回到第一个活动来刷新。 –

2

您应该使用服务从服务器获取数据并将其保存到数据库,文件,单例类或内容提供程序等常见位置。您的两项活动都应在特定的时间间隔后从该存储中获取数据。假设数据在服务器上发生变化,您的服务将获取并将其存储在本地(在数据库,Singleton类,文件中),您的活动可以轻松读取onResume或任何其他回调方法中的数据。

+0

是否会自动改变?或者我必须在特定时间段内自动刷新第二项活动 –

1

理想情况下,您必须将服务用于与多次下载相关的任何工作或者应该在活动之外进行的工作。

对于您的情况,您可以有一个service,它会向您的服务器发出API调用以获取最新值。 (如果你使用套接字,则更加可靠)。

一旦服务获取的价值,把它写入你的Realm database,并在您的活动,无论你正在使用这些值,你可以有

realm.addChangeListener(new RealmChangeListener() { 
      @Override 
      public void onChange() { 

      } 
     }); 

这个回调将被称为每当有你的数据库中的数据变化。这样你总是会同步的。