注意,在你具体些的时候,可能会思考一个问题,这个抽象接口该往哪儿放?我的建议是放在公共域内,一般是往base里放,因为只有这样,你其他的moudle才可以对该服务进行访问。
另外,更高级一点的场景是,顶层抽象出来的接口,你不同Moudle可以有不同的实现。
ARouter 路由跳转—IProvider
1.ARouter环境的配置
2.顶层抽象出来的接口,你不同Moudle可以有不同的实现
public interface INewsProvider extends IProvider {
//跳转到新闻界面
void startNewsDetail();
}
3.接口实现类NewProvider
@Route(path = ServicePathTag.SERVICE_NEWS,name = "新闻")
public class NewProvider implements INewsProvider {
@Override
public void startNewsDetail() {
ARouter.getInstance().build(ServicePathTag.NEWS_DETAIL).navigation();
}
@Override
public void init(Context context) {
}
}
4.主界面:需要调用的地方 MainActivity
class MainActivity : AppCompatActivity() {
@Autowired(name = ServicePathTag.SERVICE_NEWS)
internal var newProvider: INewsProvider? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv_app.setOnClickListener {
newProvider?.startNewsDetail()
}
}
}
5.跳转目标页 NewsDetailActivity
@Route(path = ServicePathTag.NEWS_DETAIL)
public class NewsDetailActivity extends Activity {
private TextView tv_news_two;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_splash);
}
}