繁体   English   中英

具有内部类的可变范围

[英]variable scope with inner classes

我正在我的Android应用程序中创建一个Splash屏幕( Activity )。 我有一个扩展AsyncTask的内部类。 此内部类的构造函数接受一个Context对象,该对象在Splash活动的onCreate方法内发送。 还引用了一个常量String字段。

public class Splash extends Activity {
private static final String TAG = "Splash";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    new SplashAsyncTask(this).execute(new Void[] {});
}
private class SplashAsyncTask extends AsyncTask<Void, Void, Void> {
    private Context context;
    public SplashAsyncTask(Context context) {
        this.context = context;
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Thread.sleep(1500);
        }
        catch(InterruptedException e) {
            if(Constants.LOGGING)
                Log.e(TAG, e.toString());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
    }
}
}

我应该为private static final String TAG = "Splash";使用什么范围private static final String TAG = "Splash"; 变量? 所有示波器似乎都可以正常工作,但是什么是合适的/更有效的呢? 我注意到eclipse会使用public范围声明自动创建变量

另外,我是否真的需要将Context对象发送到SplashAsyncTask构造函数? 还是我/应该在所有需要Context引用的情况下都使用Splash.this吗?

private和public仅指示如何访问变量,这是更安全的事情,理想情况下,一个类的所有变量都应为私有,并且您应使用getter和setter方法访问它们。

我认为“静态”一词在这里更为重要,因为制作变量是一件大事,这意味着可以在不创建实例的情况下访问该变量,并且所有共享此变量的含义与我想说的一样:

public static final String TAG = "Splash";

那么您可以通过以下方式访问它:

Splash.TAG

没有创建它的实例,但是由于它是私有的,所以不能,但是它仍然是您对类Splash进行的所有实例的共享变量

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM