在我的应用程序中,我首先显示家庭活动。在家庭活动中,我从 web 服务获取值并解析值并显示给用户。从家庭活动用户单击它将显示到文章显示活动。如果用户单击,则从 artcile 显示活动它将再次回家活动。它一次又一次地调用 Web 服务并解析它需要时间的值。
如何在第一次存储 web 服务解析的值并获取所有活动的值。而不是一次又一次地调用 web 服务,任何人都可以举个例子吗?
在我的应用程序中,我首先显示家庭活动。在家庭活动中,我从 web 服务获取值并解析值并显示给用户。从家庭活动用户单击它将显示到文章显示活动。如果用户单击,则从 artcile 显示活动它将再次回家活动。它一次又一次地调用 Web 服务并解析它需要时间的值。
如何在第一次存储 web 服务解析的值并获取所有活动的值。而不是一次又一次地调用 web 服务,任何人都可以举个例子吗?
当您第一次收到响应时,设置一个布尔值。并始终在调用 web 服务之前检查变量。
还将响应值存储在应用程序类变量或活动中的静态/非静态变量中。
boolean callWebService = true;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//your code here
if(callWebService){
//call webservice in background thread -> Async Task, Service, whatever
callWebService = false;
}else{
//process stored response
}
}
还要记住,如果不处理配置更改将破坏活动并再次调用 onCreate。同时处理这些场景。
希望这可以帮助。
您能否显示一小段代码,显示您调用服务的位置。
另请注意
服务中的onCreate
方法只运行一次,直到服务的整个生命周期。但是,onStartCommand
可以通过调用多次调用方法startService
。如果您的服务被销毁然后再次运行,onCreate
则会再次调用。
这就是本文档所说的:
onCreate()
系统在首次创建服务时调用此方法,以执行一次性设置过程(在调用onStartCommand()
或之前onBind()
)。如果服务已在运行,则不调用此方法。