开始学习Android中,有很多东西都不懂,一下列举一下遇到的问题:
1. Android 中Context是什么,作用是什么
Android中,一个view类中,入参通常是Context,那么其作用是什么呢?
Context翻译过来为上下文,或环境。顾名思义就是提供了一个环境或上下文信息。有些组件或者控件应用 但是,需要知道它们所在的环境或上下文信息,而这些具体的上下文信息,就是Android自带的实现了Context接口的各种类了,其最主要的功能是加载和访问资源。相当于Widnows中的句柄。
2. getApplicationContext作用是什么
getApplicationContext()返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。
以下是一段比较有意思的摘录:
浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的 参数就是一个context,在这里我们传入的是this,那么这个this究竟指的是什么东东呢? 这里的this指的是Activity.this,是这个语句所在的Activity的this,是这个Activity 的上下文。网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应 该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。 所以,在这里我们只能使用Activity的this。
3. Toast如何使用,要注意些什么
其作用是是弹出一个小信息,作为提醒用户或消息反馈来用,相当于windows的MessageBox。
Toast的一个最简单的应用是:
Toast.makeText(Toast.makeText(getApplicationContext(), "默认Toast样式",
Toast.LENGTH_SHORT).show();
其第一个参数是Context,此处用到的getApplicationContext()是获取整个应用程序的Context句柄,如果在某一个View类中使用,由于view是应用程序的一个Activity(在Android中Activity主要是用来做控制的)的一个实例,http://www.eoeandroid.com/thread-198874-1-1.html此处详细描述了什么是Activity。
在一个view中使用getApplicationContext()明显不对的,通过上面也了解到,this指针其实是整个view的context,通过this指针同样可以获取当前view类的context,从而确定toast在哪里弹出。我使用的是this.getContext(),可以在view中触发toast,而当view销毁后,就显示不出来了。