0

在我从 Big nerd Ranch Android Programming 一书中学习的 Android 项目的模型层中,有一个特定的单例 - 模型层类,如下所示:

 public class ModelLayerClass          
 {
 private static ModelLayerClass class_instance;   //its a clear singleton here ! 
 private Context context_instance;

 private ModelLayerClass(Context appContext)  //why this parameter is being passed?
 {
 context_instance = appContext;             //how this helps  here ?    
 }
 public static ModelLayerClass get(Context c)
 {
 if(class_instance=null)
  {
     class_instance = new ModelLayerClass(c.getApplicationContext());
   }
return class_instance;
 }
} 

当我浏览这本书时,它说,Android 中的常见做法是有一个 Context 参数,它允许单例“启动活动”、访问项目资源、找到你的应用程序私有存储等等......没有我们项目中的类默认访问所有这些(启动活动除外)。任何人都可以指导我找到适当的在线资源,或者可以给我一个很好的解释...thnx :)

4

1 回答 1

1

从您的活动中,您确实可以访问应用程序中的所有内容,但通常是通过使用上下文。这是Context的 Android 文档。

例如,当你写

startActivity(new Intent(MainActivity.this, NewActivity.class));

您只能访问 startActivity 方法,因为您的 Activity 类是扩展 Activity。如果你想从一个单例或另一个类或类似的东西开始一个活动,你需要有一个上下文来开始一个活动。

例如,如果你想在上面启动相同的活动,但从你的 Activity 类之外,你必须有一个上下文:

context.startActivity(new Intent(context, NewActivity.class));

您可能想要在 Activity 课程之外做的任何其他事情也是如此。

访问资源:

Bitmap imageFromRes = BitmapFactory.decodeResource(context.getResources(), R.drawable.image);

创建新的 Android 视图:

ImageView iv = new ImageView(context);

基本上,Context 是一个很好的“包罗万象”参数,它允许您的非 Android 类仍然使用您将在 Android 类中使用的方法(如 Activity、Service、Dialog 等)。

于 2013-08-15T17:31:04.960 回答