Java 如何从改装onResponse()更新活动/片段UI?
我想在下一个Android项目中使用改型2.1.0。我希望使用设计模式,因此为每个REST调用创建单独的类,即 IBalanceService.javaJava 如何从改装onResponse()更新活动/片段UI?,java,android,rest,retrofit2,Java,Android,Rest,Retrofit2,我想在下一个Android项目中使用改型2.1.0。我希望使用设计模式,因此为每个REST调用创建单独的类,即 IBalanceService.java public Interface IBalanceService{ @GET("users/{username}") void getUser(@Path("username") String username, Callback<User> cb); } 如何从onResponse()更新活动/片段中的UI 其他信息
public Interface IBalanceService{
@GET("users/{username}")
void getUser(@Path("username") String username, Callback<User> cb);
}
如何从onResponse()更新活动/片段中的UI
其他信息:min SDK:19
目标SDK:23
使用OkHttp和gson改进2.1.0
公共类平衡器客户端{
私有静态均衡器客户端实例;
私人服务请求;
私有客户端(){
改装改装=新改装.Builder()
.baseUrl(“http://hovermind.com")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RXAAdapter)
.build();
请求=改装.create(IBalanceService.class);
}
公共静态同步平衡器客户端getInstance(){
if(实例==null)
实例=新的BalanceRestClient();
返回实例;
}
public void getRequest(字符串用户名、自定义回调){
Call Call=apiService.getUser(用户名);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
User=response.body();
onResponse(用户);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
//由于请求失败,此处记录错误
}
});
}
}
在上创建如下界面:
public interface BalanceListener {
void onUserAvailable(User user);
}
在您的平衡器客户端中有一个实例。在onResponse中:
@Override
public void onResponse(Call<User> call, Response<User> response) {
User user = response.body();
listener.onUserAvailable(user);
}
public class BalanceActivity extends Activity implements BalanceListener {
......
@Override
public void onUserAvailable(User user) {
// update user views here
}
}
有一个答案,但只有一个,它并没有解决我的问题。检查我也在考虑类似的方法。关于设计模式,您能否给出一些关于哪种设计模式在性能方面最好的提示。上一个项目我使用了我自己的库+工厂设计模式。@HassanMakarov我相信没有最佳设计模式可以获得最佳性能。您可以使用MVP/MVC模式,但仍然可以编写草率而缓慢的代码。另一方面,您可以不使用任何模式,并且具有出色的性能。性能取决于100000件事情。但是,如果您想保持代码干净、结构良好、易于扩展并且相对容易地发现bug,那么就使用上面提到的一些模式。我更喜欢MVP。您可以将它们与Singleton/Factory/Builder/etc.模式结合起来(这取决于您当前的需要)。很好。但我对单身汉感到困惑。如果我在不同的活动中多次使用BalanceRestClient会怎么样。创建多个BalanceRestClient实例而不是singleton实例有什么问题?这不划算。如果已经创建了,为什么还要一次又一次地创建呢?我还看到了许多例子,其中翻新(RestAdapter)是单例的,为什么?我问了一个关于singleton restrofit(RestaAdapter)的问题,即为什么改装是singleton,改装singleton的好处是什么,如果我在一个活动中创建多个改装实例会怎么样。但不幸的是,我的问题被标记为不清楚并被删除。在那之后,我有好几个小时不能问这个问题了days@RoberBanyai我想使用设计模式。有一个热门话题:单例“反模式”,因为如果你以前做过,那么做一个新的istance是毫无意义的。使用singleton,您将把实例保存在内存中,并且可以随时访问它。
public interface BalanceListener {
void onUserAvailable(User user);
}
@Override
public void onResponse(Call<User> call, Response<User> response) {
User user = response.body();
listener.onUserAvailable(user);
}
public class BalanceActivity extends Activity implements BalanceListener {
......
@Override
public void onUserAvailable(User user) {
// update user views here
}
}