Android和OOP - 全局变量与片段中的继承Getters

Blu*_*ell 5 java oop performance android design-patterns

在Fragment中,每次需要对活动的引用或创建全局变量"mActivity"并使用它时,都应该调用getActivity().

基本上你已经有一个Activity对象(getActivity()),感觉就像创建一个全局(mActivity)是代码重复并创建一个不需要的额外引用. 但是使用getActivity()到处都看起来很可怕并且每次做多个方法调用都会感觉不对(性能?).

 // Pseudo Android
 public class MyFragent extends Fragment {

      private Activity mActivity; // Global

      public void onActivityCreated(Bundle b){

          mActivity = getActivity();

      }

      public void onClick(View v){

         randomMethodTakingActivity(mActivity);
         // or
         randomMethodTakingActivity(getActivity());

      }

      private void someMethod(){
         randomMethodTakingActivity(mActivity);
         // or
         randomMethodTakingActivity(getActivity());
      }

      private void anotherMethod(){
         mActivity.someCallback();
         // or
         getActivity().someCallback();
      }

 }
Run Code Online (Sandbox Code Playgroud)

这也与getApplication()或getView()相关;

我已阅读Coding for Performance,但看不到任何相关内容.我想要一些关于OO性质和性能的反馈(虽然可能是微不足道的).

Com*_*are 6

在Fragment中,每次需要对活动的引用或创建全局变量"mActivity"并使用它时,都应该调用getActivity().

打电话getActivity().对于初学者来说,如果你正在使用setRetainInstance(true),你的替代方法就是错误的 - 你会Activity在配置改变后指出错误.

感觉就像创建全局(mActivity)是代码重复并创建一个不需要的额外引用

绝对.

使用getActivity()到处都看起来很可怕

你当然欢迎你的意见.

每次多方法调用都感觉不对(性能?)

如果您将在紧密循环中调用它一百万次,请为临时缓存创建一个局部变量.否则,性能打击不应该是重要的.

或者,另一种看待它的方式,如果Traceview说你花了太多时间打电话getActivity(),那就担心它.