【发布时间】:2015-04-21 10:05:33
【问题描述】:
我想问一下,如果我创建了一个包含一些公共成员的外部类,并且我还在外部类中创建了一个内部类,那么在不实例化的情况下使用外部类变量是否安全? 这两种情况会有什么不同? 由于我在我的应用程序中创建了很多内部类,有时应用程序无法正常工作,我一直怀疑这是由于这个原因,所以我必须实例化它。 假设我有这个类:
Class x extends Activity
{
public sharedPreferences sx;
protected void onCreate(Bundle savedInstantState)
{
super.onCreate(savedInstantState);
setContentView(R.layout.activity_x);
sx=getSharedPreferences("name",Context.MODE_PRIVATE);
}
private class y extends AsyncTask<Void,Void,Void>
{
@override
public void doInBackground(Void... arg0){
String name=sx.getString("name",name);
}
protected void onPostExecute(Void result) {
Toast.makeText(getApplicationContext(),name,Toast.LENGTH_LONG).show();
}
}
请指导我。
【问题讨论】:
-
嗯,在这个例子中,你不能调用
doInBackground,除非你已经实例化了y,你也不能实例化y,除非你也实例化了x。所以我看不出你在问什么。 -
我同意 David 的观点,并想补充一点,您不能确定
sx是否已在doInBackground中正确设置。你应该在使用它之前检查一下。 -
对不起,它与android有关,我认为没有必要实例化x。
-
因为
x是一个android Activity,你手动没有得到它的实例,我猜OP的意思是:以所示的方式调用sx是正确的或最好在y内部创建x实例以访问sx? -
假设有许多其他类,并且我在某个地方保存了相同包声明下的 shareprefrences 的值。
标签: java android inner-classes