我有几个问题,
首先,当我阅读一些文章时,我应该在 Activity 中实现 LocationListener、ConnectionCallback、OnConnectionFailedListener 接口(interface),
将这些类的实现分开放在不同的文件中是否正确?
喜欢下面吗?
public class LocationListener implements
com.google.android.gms.location.LocationListener {
@Inject
Location mLastLocation;
@Override
public void onLocationChanged(Location location) {
// Assign the new location
mLastLocation = location;
// Displaying the new location on UI
}
}
在我的 Activity 中处理 Showing the mLastLocation 属性是否正确?
//Fields
@Inject
GoogleApiClient client;
Location mLastLocation;
//Fields
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(client);
第二,provider的方法应该怎么写?,我的猜测是这样的,大家有什么推荐的吗?
//Constructor
public LocationModule(Context context, GoogleApiClient.ConnectionCallbacks callback, GoogleApiClient.OnConnectionFailedListener listener) {
this.context = context;
this.callback = callback;
this.listener = listener;
}
@Provides
@Singleton
GoogleApiClient providesGoogleApi() {
return new GoogleApiClient.Builder(context)
.addOnConnectionFailedListener(listener)
.addConnectionCallbacks(callback)
.addApi(LocationServices.API)
.build();
}
最后,我应该在哪里处理android 6及以上设备的权限?,是在view上,还是在presenter上?
听说View一定傻到不用测试,我该如何守住这个原则?
如果有人能给我一个引用,或 github 示例代码,与我的情况相匹配,那就太好了。
最佳答案
首先,您可以将 MVP View 层视为纯 Android 模块,这意味着与 Android 操作系统的任何通信(如请求权限)都必须使用该层处理,结果返回给展示者,展示者决定做什么接下来。
关于分离这些类的实现,我自己喜欢在寻找一些类的代码时分离类以获得更清晰的可视化!我认为没有人可以提出最佳实践建议,因为这取决于您的模块和实现。根据 Clean Code book,在这种类型的决策情况下,您必须更多地考虑代码的可读性。
最后,关于 LocationModule,这是完全正确的,但如果我处在你的位置,我什至会在更高级别的组件(例如 ApplicationComponent)中请求 Context 并将其从 LocationModule 构造函数中删除.
//Constructor
public LocationModule(GoogleApiClient.ConnectionCallbacks callback, GoogleApiClient.OnConnectionFailedListener listener) {
this.callback = callback;
this.listener = listener;
}
@Provides
@Singleton
GoogleApiClient providesGoogleApi(Context context) {
return new GoogleApiClient.Builder(context)
.addOnConnectionFailedListener(listener)
.addConnectionCallbacks(callback)
.addApi(LocationServices.API)
.build();
}
上下文可以在更高的模块中使用它的相关提供者来提供。
这是一个示例代码库,它可以在这方面真正帮助您:
关于android - 使用 Dagger 在 Android mvp 上实现 GoogleApiClient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39860402/