添加依赖
implementation 'com.alibaba:arouter-api:1.5.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
配置module
defaultConfig { ...... javaCompileOptions { annotationProcessorOptions { arguments = [ AROUTER_MODULE_NAME : project.getName() ] } } }
上代码
App完成初始化工作
public class App extends Application { private boolean isDebugArRouter = true; private static Context mContext; public static Context getContext(){ return mContext; } @Override public void onCreate() { super.onCreate(); mContext = getApplicationContext(); if (isDebugArRouter){ ARouter.openDebug(); ARouter.openLog(); } ARouter.init(App.this); } @Override public void onTerminate() { super.onTerminate(); ARouter.getInstance().destroy(); } }
BaseActivity 进行Arouter 注入
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ARouter.getInstance().inject(this); } }
拦截器
@Interceptor(priority = 1)//权限 数值越小权限越高 public class UseIInterceptor implements IInterceptor { private String TAG = "UseIInterceptor"; @Override public void process(Postcard postcard, InterceptorCallback callback) { if (postcard.getPath().equals("")){ Log.d(TAG, "process: 你要被拦截了!"); callback.onInterrupt(new Throwable("未知错误导致被拦截!")); }else{ callback.onContinue(postcard); } } @Override public void init(Context context) { Log.d(TAG, "init: 初始化拦截器"); } }
MainActivity
//路径至少需要两级 @Route(path = Constants.ACTIVITY_URL_MAIN) public class MainActivity extends BaseActivity { private Button button1; private String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 =findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ARouter.getInstance() .build(Constants.ACTIVITY_URL_TARGET) .withString("text","这是TargetActivity") .withInt("time",3) .navigation(MainActivity.this, 123,new NavigationCallback() { @Override public void onFound(Postcard postcard) { //目标路由被发现时调用 Log.d(TAG, "onFound: 发现路由"+postcard.getPath()); } @Override public void onLost(Postcard postcard) { //路由丢失后调用 Log.d(TAG, "onLost: 路由丢失"); } @Override public void onArrival(Postcard postcard) { //路由到达时调用 Log.d(TAG, "onArrival: 路由到达"); } @Override public void onInterrupt(Postcard postcard) { //路由被拦截后调用 Log.d(TAG, "onInterrupt: sorry啊 阁下被拦截了"); } }); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case 123: Toast.makeText(this,"lalala",Toast.LENGTH_SHORT).show(); break; default: break; } } }
TargetActivity
@Route(path = Constants.ACTIVITY_URL_TARGET) public class TargetActivity extends BaseActivity { @Autowired(name = "text") String text; @Autowired(name = "time") int time; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_target); textView = findViewById(R.id.text); textView.setText(text+time); setResult(123); } }
完事儿~ ==