#author("2021-07-30T08:36:42+08:00","default:Admin","Admin")
#author("2024-11-08T21:22:36+08:00","default:Admin","Admin")
[[Android]]

&color(red){※前提条件:本情報はAndroid Studio 4.2.2を基づいて説明してる};

#contents

* 概要 [#a0e59915]

Context是一个抽象基类。在翻译为上下文,是提供一些程序的运行环境基础信息。

在我们的实际开发中,context会被大量的使用到,例如startActivity,访问资源,toast弹出,dialog,启动service,发送广播等等。

Context一共有三种类型,分别是Application、Activity和Service。

这三个类虽然分别各种承担着不同的作用,但它们都属于Context的一种,而它们具体Context的功能则是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。

* 获取context的方法 [#fba0772a]

** Activity.this的context [#e536eb50]

(一般用法)返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁

** getApplicationContext() [#nd85f470]

返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁

** getBaseContext() [#w219e069]

返回由构造函数指定或setBaseContext()设置的上下文

** getActivity() [#xf5744ef]

多用于fragment中

** 工具类中获取的方法 [#h3a13e2b]

自定义Application

#codeprettify{{
public class MyApplication extends Application {
 
    private static Context context;
 
    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }
    /**
     * 获取全局上下文*/
    public static Context getContext() {
        return context;
    }
}
}}

添加在manifest中<application>中加入android:name="MyApplication"

#codeprettify{{
<application
    android:name="MyApplication" >
}}


然后使用只要需要context但又获取不得或获取麻烦的话,只要使用:

#codeprettify{{
MyApplication.getContext()
}}

#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS