Я новичок в AspectJ, хотя я знал об этой методологии AOP много лет.
Теперь я впервые использую его в своем приложении для Android и хочу задать несколько вопросов относительно него.
У меня есть код Java:
private void mainView() {
... (some code)
<A>
setContentView(R.layout.main);
mView = findViewById(R.id.Main_Root);
mView.setOnTouchListener(this);
<B>
... (some code)
}
У меня есть следующий код AspectJ:
public aspect mainViewTiming {
pointcut callSetContentViewTiming():
call(* android.app.Activity.setContentView(..))
&& withincode(void mainView(..))
;
pointcut callFindViewById():
call(* android.app.Activity.findViewById(..))
&& withincode(void mainView(..))
;
pointcut callSetOnTouchListener():
call (* android.view.View.setOnTouchListener(..))
&& withincode(void mainView(..))
;
}
Теперь у меня вопрос, как мне использовать AspectJ и вычислить время, необходимое для запуска до?
У меня есть 3 точки, и я хотел бы знать, как лучше всего их объединить, чтобы получить этот эффект? По этой ссылке я узнал, что могу использовать «cflow»:
http://www.eclipse.org/aspectj/doc/released/progguide/language-joinPoints.html
before(): cflow(callSetContentViewTiming()) && cflow(callFindViewById()) && callSetOnTouchListener() {
start = System.currentTimeMillis();
}
Но я не был уверен, правильно ли это. И как мне рассчитать разницу между и при комбинировании pointcuts. И есть ли что-то вроде "after ()"?
Спасибо заранее.