注意,在你具體些的時候,可能會思考一個問題,這個抽象接口該往哪兒放?我的建議是放在公共域內,一般是往base裏放,因爲只有這樣,你其他的moudle纔可以對該服務進行訪問。
另外,更高級一點的場景是,頂層抽象出來的接口,你不同Moudle可以有不同的實現。
ARouter 路由跳轉—IProvider
1.ARouter環境配置(看配置文檔即可)
2.頂層抽象出來的接口,你不同Moudle可以有不同的實現
public interface INewsProvider extends IProvider {
//跳轉到新聞界面
void startNewsDetail();
}
3.接口實現類NewProvider
@Route(path = ServicePathTag.SERVICENEWS,name = "新聞")
public class NewProvider implements INewsProvider {
@Override public void startNewsDetail() {
ARouter.getInstance().build(ServicePathTag.NEWSDETAIL).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);
}
}
6.常量類
public class ServicePathTag {
public final static String SERVICE_NEWS="/news/provider";
public static final String NEWS_DETAIL = "/news/detail";
}