0

ApsectJ で注入されたメソッドのポイントカットを定義するにはどうすればよいですか?

次のようにメソッドを注入しましたが、正しく動作します。

public void com.moeActivity.onBackPressed() {
    super.onBackPressed();
    Log.d("ATAG", "BACKK");
}

注入されたメソッドの実行を検出するためにポイントカットを定義しようとしていますが、成功していません。次のことを試しました。

pointcut eventActivity(): 
  execution(* com.moeActivity.onBackPressed(..));

どんな助けでもいただければ幸いです

ありがとう!

4

1 に答える 1

0

Log.d("ATAG", "BACKK")次のように、注入されたメソッドを(おそらく)内部で実行するには、アドバイス本文が必要です。

public aspect LoggingAspect{
 after() : eventActivity() {
   Log.d("ATAG", "BACKK");
 } 
}

これを行うと、 after アドバイスは eventActivity と呼ばれる名前付きポイントカットに接続し、クロスカット アクション (すなわちLog.d("ATAG", "BACKK")) afterを実行しsuper.onBackPressed()ます。@kriegaex が言うように、効率的に理解するには AspectJ の例をいくつか読む必要があります。

于 2014-12-22T12:12:15.703 に答える