我正在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";
变量使用什么范围?所有范围似乎都很好,但什么是正确/更有效?我注意到eclipse使用public
范围声明
另外,我真的需要将Context
对象发送到SplashAsyncTask
构造函数吗?或者我可以在我需要Splash.this
引用的所有情况下使用Context
吗?
答案 0 :(得分:1)
私有和公共只表明你可以如何访问你的变量,它更像是一个安全的东西,理想情况下,一个类的所有变量都应该是私有的,你应该通过getter和setter方法访问它们。
我认为静态这个词在这里更重要,因为创建一个变量是一件大事,这意味着可以访问该变量而不需要创建一个实例,并且所有共享这个变量的意思是你的意思变量:
public static final String TAG = "Splash";
然后你可以通过写:
来访问它Splash.TAG
没有制作它的实例,但由于它是私有的你不能但它仍然是一个共享变量,包含你的类所有实例Splash
希望这会有所帮助