getApplicationContext()、getBaseContext()和Activity.this区别
16lz
2021-01-26
普通的Android应用程序中,通常有两种Context,Application和Activity,也即getApplicationContext()和Activity的this。
getApplicationContext() 返回应用的上下文,生命周期对应整个应用。若应用销毁,context销毁。【总体来说,使用全局应用程序Context可能是最好的】
Activity.this的context 返回当前activity的上下文,生命周期对应Activity。若activity销毁(比如横竖屏切换等情况),context也会被销毁多次。
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文。例如
public Dialog displayDialog(int choice) { switch(choice){ case 0: AlertDialog aDialog = new AlertDialog.Builder(this) .setIcon(R.drawable.ic_launcher) .setTitle("Hello World") .setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {Toast.makeText(getBaseContext(), "OK clicked", Toast.LENGTH_SHORT).show();}}).......这里getBaseContext()返回的是AlertDialog构造函数指定的context,此处不能用this代替,因为上面的this返回的是整个Activity对象对应context,而如果在onClick函数中使用this返回的是AlertDialog的context。
更多相关文章
- Manifest.xml中的属性
- 【073】Android(安卓)数据存储(SQLite)
- Android(安卓)Cursor源码笔记(2)
- Android版手风琴(ExpandableListView)
- android 事件分发机制(转载)
- 蓝牙API
- Android再按一次返回键退出程序的实现
- Android(安卓)View事件派发机制详解与源码分析
- Android(安卓)中文 API (29) —— CompoundButton