Android的上下文環境Activity的this和getApplicationContext的區別
AlertDialog.Builder builder = new Builder(this);
這裡就必須用this引數了,因為這個通知框需要掛載到指定的Activity上
而如果使用getApplicationContext作為實參的話,那麼程式就會報錯,因為它不曉得掛載到哪個Activity上
那什麼時候用this,什麼時候用getApplicationContext
如果牽涉到了程式碼(物件)的生命週期的時候,就使用getApplicationContext作為上下文引數
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this);
Databse db = helper.getReadableDatabase();
所以牽涉到生命週期需要用到上下文物件的時候就要用getApplicationContext作為實參,getApplicationContext當應用程式程式一建立(程式一開啟),此應用程式的上下文就存在了
直到此應用程式的程式被銷燬,它的上下文才會銷燬
這裡就必須用this引數了,因為這個通知框需要掛載到指定的Activity上
而如果使用getApplicationContext作為實參的話,那麼程式就會報錯,因為它不曉得掛載到哪個Activity上
那什麼時候用this,什麼時候用getApplicationContext
如果牽涉到了程式碼(物件)的生命週期的時候,就使用getApplicationContext作為上下文引數
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this);
Databse db = helper.getReadableDatabase();
如果實參傳入的是this,如果當前Activity介面被關閉了,那麼Activity就會執行onDestory()方法進行銷燬,而此時this所代表的物件就會被銷燬了,一旦this代表的物件被銷燬了。
new MySQLiteOpenHelper(this);利用這句程式碼開啟的資料庫連結也會隨之關閉。所以,當Activity關閉後再想運算元據庫就會操作失敗了。
所以牽涉到生命週期需要用到上下文物件的時候就要用getApplicationContext作為實參,getApplicationContext當應用程式程式一建立(程式一開啟),此應用程式的上下文就存在了
直到此應用程式的程式被銷燬,它的上下文才會銷燬
相關文章
- Android之getApplication()、getApplicationContext的區別AndroidAPPContext
- Android中Application和Activity的Context物件的區別AndroidAPPContext物件
- Android應用程式視窗(Activity)的執行上下文環境(Context)的建立過程分析AndroidContext
- getApplication和Activity.this的區別APP
- Android之android:theme設定在Application 和 Activity的區別AndroidAPP
- activity和fragment中startactivityforresult方法的區別Fragment
- Dalvik和ART執行時環境的區別
- PHPWAMP的優點以及使用方式、PHPWAMP綠色環境和其他整合環境的區別PHP
- SAP Commerce Cloud 構建環境和最終執行環境的區別Cloud
- SAP雲平臺執行環境Cloud Foundry和Neo的區別Cloud
- 【譯】JS的執行上下文和環境棧是什麼?JS
- ubuntu系統環境配置檔案的區別Ubuntu
- DDD和OO的重要區別:上下文重於抽象抽象
- Oracle RAC環境下vip/public/private IP的區別Oracle
- Activity和Fragment有什麼區別Fragment
- Android的Task和Activity相關Android
- SEAndroid和普通android的區別Android
- Oracle全域性資料庫名、環境變數和sid的區別Oracle資料庫變數
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- android:layout_gravity 和 android:gravity 的區別Android
- Linux下環境變數配置方法梳理(.bash_profile和.bashrc的區別)Linux變數
- Android核心和Linux核心的區別AndroidLinux
- Android的padding和margin區別Androidpadding
- android onTouchEvent和setOnTouchListener中onTouch的區別Android
- 安卓APP活動Activity的生命週期及其各方法,注意onPause()和onStop()的區別安卓APP
- 從getApplicationContext和getApplication再次梳理Android的Application正確用法APPContextAndroid
- 工字電感和色環電感的區別
- sys_context 獲取環境上下文的函式Context函式
- ../和./和/的區別
- 管理 Python 環境和依賴關係的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的區別Python
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- react-native 環境的搭建(包括Android和iOS)ReactAndroidiOS
- Android開發環境中的概念和工具介紹Android開發環境
- Android 9 Activity的載入和顯示Android
- Android之Intent的setClass和setClassName的區別AndroidIntent