次のフラグメントがあるとします。
public class FragmentA extends Fragment {
public interface CallerProxy {
public void publishParams(Object... dataParams);
}
private CallerProxy mCallerProxy;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof CallerProxy) {
this.mCallerProxy = (CallerProxy) activity;
}
}
@Override
public void onDetach() {
super.onDetach();
this.mCallerProxy = null;
}
protected void sendCustomMessage(Object... objects) {
if (mCallerProxy != null) {
mCallerProxy.publishParams(objects);
}
}
}
インターフェイスを静的または非静的に定義することの違いは何ですか? staticを宣言するかどうかに関係CallerProxy
なく、親アクティビティで次のようになります。
public class MyProxyActivity extends FragmentActivity implements CallerProxy {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(...) and other relevant code
}
@Override
public void publishParams(Object... dataParams) {
// /
}
}
私が知っていることから、インターフェイスが静的として宣言されている場合、インターフェイスはFragmentA
クラスオブジェクトに関連付けられており、静的であると宣言していない場合はFragmentA
インスタンスオブジェクトに関連付けられています-これはメモリリークにつながりますか?
インターフェイスが静的でない場合に発生する可能性のある問題とその理由は?