刷新当前活动中的先前活动

时间:2016-10-05 04:35:45

标签: android android-studio

让" A "是第一个从服务器获得响应并保存在共享首选项/(使用意图)然后发送到第二个活动" B "并在textview中显示值。现在我的问题是,是否可以在不返回第一个活动的情况下刷新第二个活动中的第一个活动,因为服务器可能会更新特定值,因此我在第二个活动中显示的值应该自动更改。(使用计时器) /线)。 请给我一个主意。提前谢谢。

例如: car的值= 20,头等舱的van = 30,我在二等舱中显示它。 但突然在几分钟/秒之后,汽车价值变为car = 50,现在我必须在第二次活动中更新一个值。

7 个答案:

答案 0 :(得分:2)

你要做的不是一个好习惯。当你进行第二项活动时,第一项活动就会停止。

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

答案 1 :(得分:2)

您应该使用服务从服务器获取数据并将其保存到公共场所,如数据库,文件,单例类或内容提供程序。您的两个活动都应该在特定的时间间隔后从该存储中获取数据。假设服务器上的数据已更改,您的服务将获取它并将其存储在本地(在DB,Singleton类,文件中),并且您的活动可以轻松地在onResume或任何其他回调方法中读取该数据。

答案 2 :(得分:1)

使用ContentProvider存储您的数据,然后在应该了解更改的活动中注册观察者。 请参阅https://developer.android.com/reference/android/content/ContentResolver.html#registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver

答案 3 :(得分:1)

你可以将模型类存储在Singleton类中,所以无论更新值是什么,只需更新你的单例类,当你回到Activity A 时调用你的initview函数,这样你的屏幕就会刷新

答案 4 :(得分:1)

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

在您的情况下,您可以让service对您的服务器进行API调用以获取最新值。 (如果你使用套接字,那就更可靠了。)

服务获取值后,将其写入Realm database,并在您使用这些值的活动中将其写入

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

            }
        });

只要数据库中有数据更改,就会调用此回调。通过这种方式,您将始终保持同步。

答案 5 :(得分:0)

您可以定义静态变量并在更新期间使用该变量,或者调用startActivityForResult()并更新onActivityResult()中的值

答案 6 :(得分:0)

您可以使用SQLite DB并使用内容提供程序机制来更新UI,而不是共享首选项。也就是说,您可以使用游标加载器来更新数据。

创建活动扩展游标加载器并使用回调来更新活动A中的UI。当您在SQLite数据库中修改数据时,它将自动反映在UI中,前提是您使用游标更新UI。

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