组件化开发-简单的路由
2020-10-16 本文已影响0人
有腹肌的豌豆Z
路由原理
动手写一个SimpleRouter,这个路由很简单主要是实现逻辑。
1.所有的Activity都注册到路由表。
2.界面跳转的时候从路由表里面获取对应的Class。进而界面跳转。
Demo
ZRouter路由表
public class ZRouter {
private static final ZRouter zRouter = new ZRouter();
private ZRouter() {
}
/**
* 获取单列
*
* @return
*/
public static ZRouter getInstance() {
return zRouter;
}
/**
* 路由表 将所有的Activity都注册到这里
*/
private Map<String, Class<? extends Activity>> routers = new HashMap<>();
/**
* 将Activity注册到路由表
*
* @param key key
* @param cls class
*/
public void register(String key, Class<? extends Activity> cls) {
routers.put(key, cls);
}
/**
* 界面跳转
*
* @param activity 发起界面跳转的 activity
* @param key 通过key获取注册好的目标 activity class
*/
public void startActivity(Activity activity, String key) {
Class<? extends Activity> aClass = routers.get(key);
if (aClass != null) {
activity.startActivity(new Intent(activity, aClass));
}
}
}
Application 注册当前所有用到的Activity
public class Application extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
// 初始化的时候将所有的Activity都注册到路由表中
ZRouter.getInstance().register("main_2", MainActivity2.class);
ZRouter.getInstance().register("main_3", MainActivity3.class);
}
}
Activity发起界面跳转
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 点击跳转
findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ZRouter.getInstance().startActivity(MainActivity.this, "main_2");
}
});
findViewById(R.id.btn_2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ZRouter.getInstance().startActivity(MainActivity.this, "main_3");
}
});
}
}