我想问一下,如果我创建一个具有一些公共成员的外部类,并且我还在外部类中创建了一个内部类,那么使用外部类变量而不实例化它是否安全? 这两种情况会有什么不同? 因为我在我的应用程序中创建了很多内部类,有时应用程序不能正常工作,我总是怀疑它是由于这个,所以我必须实例化它。 假设我有这个课程:
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();
}
}
请指导我。
答案 0 :(得分:1)
Java语言允许内部类访问外部类&#39;私人会员。为弥合这一差距,编译器会生成几种合成方法:
有关示例http://developer.android.com/training/articles/perf-tips.html#PackageInner
的更多信息答案 1 :(得分:0)
好吧,您的示例代码正在使用不应该使用的方法进行UI操作。如果您想对视图做任何事情(例如Toast,但实际上是什么),您希望在onPostExecute
和onProgressUpdate
方法上执行此操作。
像您一样访问SharedPreferences
正常。