让" A "是第一个从服务器获得响应并保存在共享首选项/(使用意图)然后发送到第二个活动" B "并在textview中显示值。现在我的问题是,是否可以在不返回第一个活动的情况下刷新第二个活动中的第一个活动,因为服务器可能会更新特定值,因此我在第二个活动中显示的值应该自动更改。(使用计时器) /线)。 请给我一个主意。提前谢谢。
例如: car的值= 20,头等舱的van = 30,我在二等舱中显示它。 但突然在几分钟/秒之后,汽车价值变为car = 50,现在我必须在第二次活动中更新一个值。
答案 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)