`

Android中Context简介(二)

 
阅读更多
1.首先什么是context?

文档语焉不详,说是resource什么的,反正是没看懂,实际上可以认为它是一个指向parent对象的指针,受到那个parent对象的控制。

2.为什么需要context?

试想一下这个语句:

Button myButton =newButton(this);


这个this就是context,前面说了它指向了parent对象,那指向了哪里?为什么需要这么做?原因是Button为了能完成自己的使命(响应各种操作)就得让Android系统知道自己是属于哪个Activity的,这个信息是必须的,因为只有这样Android系统才会对其进行管理,比如响应onClick()事件,否则系统连Button是属于哪个Activity的都不知道,怎么响应呢?如果Button的context和Activity的context是一样的,那么它们都是可见的,比如上面那个button跟Activity一样是可见的,它们的context指向另一个不可见的对象,也就是它们受那个不可见的对象控制,我理解为系统。

3.Application context和Activity context。

这是两种不同的context,也是最常见的两种。第一种中context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,第二种中的context跟Activity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次。至于用哪种context,得看应用场景,个人感觉用Activity的context好一点,不过也有的时候必须使用Application的context。



举例来说:SQLite建立时是需要context的,那么我们怎么传呢?

一、建立SQLiteOpenHelper 的子类
public class mySQLiteHelper extends SQLiteOpenHelper {

..........

public DBOpenHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

.......

}

二、我们用另一个类封装一下这个类,完善数据查询、插入、删除、更新等操作,具体方法不表。

public class DBManager {

//定义上面那个类对象;

private mySQLiteHelper dbHelper;

 

//注意这里得定义一个context,你想直接得到是得不到的,需要调用这个类的对象自己传一个context过来,这个context再将得到的context传到mySQLiteHelper 那个类去。

private Context context;

 

//构造方法

public DBManager (Context context) {

this.context = context;

dbHelper = new DBOpenHelper(context,DB_NAME,null,VERSION);


db = dbHelper.getWritableDatabase();

}

}


三、最后,我们在一个Activity中进行调用
public class myActivity extends Activity {

private DBManager db;

 public void onCreate(Bundle savedInstanceState) {

........

     //dbmgr = new DataManager(getApplicationContext()); 第一种

       dbmgr = new DataManager(this);  //第二种

//两种方法都可以,第一种是Application的context,第二种是Activity的context

.........

}

}
分享到:
评论

相关推荐

    android中Context深入详解

    Android 中 Context 深入详解 Context 是 Android 中一个非常重要的概念,它是 Android 应用程序的核心组件之一。Context 提供了许多有用的方法和变量,用于访问应用程序的资源和组件。本文将深入探讨 Android 中 ...

    Android的context使用

    在Android开发中,Context是一个非常核心的概念,它代表了应用程序的环境或上下文,提供了与系统服务交互的能力。本文将详细介绍Android中Context的使用,并通过一个简单的Demo展示如何在工具类和View中灵活地获取和...

    谈谈Android里的Context的使用

    这里大致可以分为两种:一是传递Context参数,二是调用全局的Context. 其实我们应用启动的时候会启动Application这个类,这个类是在AndroidManifest.xml文件里其实是默认的 android:icon="@drawable/ic_...

    Android Context使用例子.

    在Android开发中,`Context`是一个非常核心的概念,它就像是应用程序的一个全局环境或者上下文,提供了与系统服务交互的能力。`Context`的理解和正确使用对于编写健壮的Android应用至关重要。下面将详细介绍`Context...

    012_android 之消息提示toast 和Context

    在Android开发中,消息提示和上下文(Context)是两个非常基础且重要的概念。本教程“012_android 之消息提示toast 和Context”将深入讲解这两个关键知识点,帮助开发者更好地理解和运用它们。 首先,我们来谈谈...

    Android Context 浅析

    简要介绍android context 的用法

    android全局context工具类

    android:name="工具类的路径" 调用: Toast.makeText(MainApplication.getContext(), "文本", Toast.LENGTH_SHORT).show(); 不管你想在项目的任何地方使用Context,只需要调用一下MainApplication.getContext()...

    android_context详解

    在Android应用开发中,`Context`是一个至关重要的概念,它如同一个纽带,连接着应用的各个组成部分,如Service、BroadcastReceiver、Activity等。本文将深入剖析`Context`的内部机制,帮助开发者更好地理解并运用这...

    Android全局变量和Context

    Android全局变量和Context的实现方法

    避免 Android中Context引起的内存泄露

    在Android开发中,Context是应用程序的核心组成部分,它提供了与Android系统服务交互的接口。然而,不恰当的使用Context可能导致内存泄露,从而影响应用性能和用户体验。本文将深入探讨由Context引起的内存泄露问题...

    Android 中Context的使用方法详解

    Android 中Context的使用方法详解 Context 是 Android 中一个非常重要的概念,它提供了关于应用环境全局信息的接口,它是一个抽象类,它的执行被 Android 系统所提供。 Context 的主要作用是提供了关于应用环境全局...

    Android Context与GetApplicationContext的区别及使用1

    在Android开发中,Context是一个至关重要的概念,它扮演着应用程序组件与系统服务交互的关键角色。Context可以理解为应用运行时的上下文环境,提供了对系统资源和组件的访问接口。本文将深入探讨Context的基本概念,...

    Context-Menu.Android源码

    在Android编程中,上下文菜单(Context Menu)是一种特殊的对话框,它只显示与当前屏幕上的特定项目相关的操作。用户通常通过长按某个视图元素来触发上下文菜单的显示。创建和管理上下文菜单涉及到注册菜单项、重写`...

    android demo,BaseAdapter传递context的应用

    `Context`在Android开发中扮演着核心角色,它是应用程序运行时环境的抽象表示,提供了与系统服务交互的接口。在`BaseAdapter`中,`Context`主要用于以下几个方面: 1. **视图创建**:在`getView()`方法中,我们需要...

    android context理解

    在Android开发中,`Context`是一个至关重要的概念,它扮演着连接应用组件、系统服务以及资源的桥梁角色。本文将深入探讨`Context`在Android中的作用,以及如何正确使用以避免常见的内存泄漏问题。 #### 一、Context...

    通过反射获取Context实例的Demo

    在Android开发中,Context是应用程序的核心组件之一,它提供了与Android系统交互的接口,包括启动Activity、发送广播、访问资源等操作。当我们需要在非Activity或非Service类中使用Context时,可以通过各种方式获取...

    Android中上下文(context)用法详解

    ### Android中上下文(context)用法详解 #### 一、Context基本概念 **Context** 是 Android 开发中一个非常核心且重要的概念。它提供了一系列方法来帮助开发者访问应用程序的各种资源和服务。 - **定义**: `...

    反射获取Context的实例

    首先,让我们了解`Context`在Android中的角色。`Context`是Android应用的基础组件,它提供了与系统交互的各种方法,如启动Activity、发送Broadcast、访问资源等。通常,我们可以在Activity、Service或Application中...

    Android编程中context及全局变量实例详解

    本文实例讲述了Android编程中context及全局变量的用法。分享给大家供大家参考,具体如下: 今天在研究context的时候,对application和activity context有了一定的了解,下面是从网上复制过来的资料 Application ...

    android Context Menu With Icon

    在Android开发中,Context Menu是一种常见的用户交互设计,它允许用户在长按或者右键点击一个视图或控件时,弹出一个包含多个选项的菜单。本篇将深入探讨如何在Android应用中实现带有图标的Context Menu,以及相关的...

Global site tag (gtag.js) - Google Analytics