zoukankan      html  css  js  c++  java
  • Android(java)学习笔记166:上下文的区分

    1.两种上下文: 

    (1)Activity.this                               界面的上下文

    (2)getApplicationContext()         整个应用程序的上下文

     

    2.通常是两者是可以互用,但是如下对话框创建的场景,就只能使用Activity.this,如下:

     1 package com.itheima.context;
     2 
     3 import android.app.Activity;
     4 import android.app.AlertDialog;
     5 import android.app.AlertDialog.Builder;
     6 import android.os.Bundle;
     7 import android.view.View;
     8 import android.widget.TextView;
     9 
    10 public class MainActivity extends Activity {
    11 
    12     @Override
    13     protected void onCreate(Bundle savedInstanceState) {
    14         super.onCreate(savedInstanceState);
    15         setContentView(R.layout.activity_main);
    16        (1)TextView tv = new TextView(MainActivity.this); //这里不能使用getApplicationContext()
    17     }
    18     
    19     public void click(View view){
    20        (2) AlertDialog.Builder builder = new Builder(this);
    21         builder.setTitle("警告");
    22         builder.setMessage("对话框出来了");
    23         builder.setPositiveButton("确定", null);
    24         builder.show();
    25     }
    26 
    27 }

    在上面(1)和(2)中不能使用getApplicationContext():

    (1)TextView tv = new TextView(MainActivity.this);tv是依赖Activity(界面而存在的);Activity销毁,tv也会销毁

    如果使用TextView tv = new TextView(getApplicationContext()),可能Activity销毁了,但是整个应用程序还没有销毁,这样这个tv会变成空指针,导致内存泄露。

     

    (2)AlertDialog.Builder builder = new Builder(MainActivity.this);

    同样创建对话框,对话框也是依赖Activity而存在的,如果使用AlertDialog.Builder builder = new Builder(getApplicationContext());

    这个getApplicationContext()是Activity的父类,父类可能由很多子类Activity继承,这样对话框不能定位在哪个Activity上显示,会报错

     

    (1)和(2)中tv和builder的显示都必须绑定特定的Activity界面

  • 相关阅读:
    Zepto
    html5新增表单控件和表单属性
    初识html5
    H5 css3布局
    H5 css3背景透明度
    H5 css3特效
    H5 css3渐变
    H5css3的文本属性
    一个类有两个类别中,在类别里实现了相同的方法结果?
    size_t 理解误区
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4798393.html
Copyright © 2011-2022 走看看