上一篇中,咱們講解了如何實現一句代碼隨意切換主流網絡框架,以及 Hilt的基本使用 。 在本篇中,咱們將會把這倆者相結合,打形成一個 能經過Hilt 快速 切換主流網絡框架的例子。java
在開始以前,咱們需先下載 以前已寫好的 能快速切換主流框架的demo ;git
Hilt的集成參考:Hilt的基本使用github
當時咱們將App看做是客戶,各類主流框架看做成不一樣的業主,而隔離層看做成對應的房產公司以及對應的中介。 而本篇所打造的快速切換主流網絡框架的例子,將會重點打造隔離層裏面的中介。markdown
集成參考:Hilt的基本使用網絡
註釋或者刪掉 關於 HttpHelper 的全部信息。在本篇中,該中介不符合房產公司要求,直接開除。框架
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface BindOkhttp {
}
複製代碼
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface BindVolley {
}
複製代碼
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface BindXUtils {
}
複製代碼
建立 HttpProcessorModule 類,並注入實現不一樣的網絡框架ide
@Module
@InstallIn(ApplicationComponent.class)
public abstract class HttpProcessorModule {
@BindOkhttp
@Binds
@Singleton
abstract IHttpProcessor bindOkhttp(OkHttpProcessor okHttpProcessor);
@BindVolley
@Binds
@Singleton
abstract IHttpProcessor bindVolley(VolleyProcessor volleyProcessor);
@BindXUtils
@Binds
@Singleton
abstract IHttpProcessor bindXUtils(XUtilsProcessor xUtilsProcessor);
}
複製代碼
@HiltAndroidApp
public class MyApplication extends Application {
// 只須要 在這切換不一樣的註解,就能實現快速切換網絡框架
@BindOkhttp // @BindVolley // @BindXUtils
@Inject
IHttpProcessor iHttpProcessor;
public IHttpProcessor getiHttpProcessor() {
return iHttpProcessor;
}
}
複製代碼
@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {
IHttpProcessor iHttpProcessor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//拿到Application 對應的網絡框架
iHttpProcessor=((MyApplication)getApplication()).getiHttpProcessor();
}
public void click(View view) {
String url="https://v.juhe.cn/historyWeather/citys";
HashMap<String,Object> params=new HashMap<>();
//https://v.juhe.cn/historyWeather/citys?&province_id=2&key=bb52107206585ab074f5e59a8c73875b
params.put("province_id","2");
params.put("key","bb52107206585ab074f5e59a8c73875b");
iHttpProcessor.post(url, params, new HttpCallback<ResponceData>() {
@Override
public void onSuccess(ResponceData objResult) {
Toast.makeText(MainActivity.this, objResult.getResultcode(), Toast.LENGTH_SHORT).show();
}
});
}
}
複製代碼
到這,本篇大概差很少就結束了,是否是很簡單哇?oop