安卓四大組件之Activity(一)Context(1000-4984行)

愛學習,愛生活,我是萬子。繼續從1000行開始研究

可以獲取到 SDCard/Android/data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據

獲取路徑:/storage/emulated/0/Android/obb/應用包名 

該目錄是應用的數據存放目錄,一般被用來存放遊戲數據包obb文件。默認存在,可讀寫(6.0系統可以不用向用戶申請)

獲取路徑:/data/user/0/應用包名/cache

該目錄是應用的文件緩存目錄,應用被卸載時,該目錄一同被系統刪除。默認存在,默認具備讀寫權限。不同於getFileDir,該目錄下的文件在系統內存緊張時,會被清空文件,來騰出空間供系統使用,著名的圖片加載庫ImageLoader就是在沒有外置存儲讀寫權限時使用此文件夾。getFileDir,不會因爲系統內存不足而被清空。(6.0系統可以不用向用戶申請)

https://yq.aliyun.com/articles/59477

獲取路徑:/data/user/0/應用包名/code_cache

默認存在,可讀寫。(6.0系統可以不用向用戶申請)

獲取路徑:(以下載目錄爲準) /storage/emulated/0/Android/data/應用包名/files/Download

默認存在,可讀寫。(6.0系統可以不用向用戶申請)

系統的api

返回預加載緩存中特定於應用程序的目錄的絕對路徑。<p>當設備在存儲空間上運行時,可以刪除緩存目錄中存儲的文件。無法保證這些文件何時會被刪除。

獲取路徑:/storage/emulated/0/Android/data/應用包名/cache

默認存在,可讀寫。(6.0系統可以不用向用戶申請)

返回所有共享/外部存儲設備上特定於應用程序的目錄的絕對路徑,應用程序可以在其中放置媒體文件。這些文件被掃描並通過以下方式提供給其他應用程序

檢索,如果需要,創建一個新目錄,應用程序*可以在其中放置自己的自定義數據文件。可以使用返回的File*對象創建和訪問此目錄中的文件。注意,通過File對象創建的文件*只能由您自己的*應用程序訪問;您只能設置整個目錄的模式,而不能設置單個文件的*模式。

打開與上下文的*應用程序包關聯的新的私有SQLiteDatabase。如果數據庫文件不存在,則創建它。

打開與上下文的*應用程序包關聯的新的私有SQLiteDatabase。如果不存在,則創建數據庫文件。

將現有數據庫文件從給定源存儲上下文移到*此上下文。這通常用於在升級之後在存儲*位置之間遷移數據,例如遷移到設備保護*存儲。

刪除與此上下文的*應用程序包關聯的現有私有SQLiteDatabase。

返回文件系統上的絕對路徑,其中存儲有*{@link#openOrCreateDatabase}創建的數據庫

返回命名與*this Context的應用程序包相關聯的私有數據庫的字符串數組。

獲取牆紙路徑 WallpaperManager代替

設置牆紙但是需要權限

清理android的桌面

我靠爲啥context中會有startActivity

原來startActivity不僅僅實在Activity,原來context已經實現了,所以只要有上下文就可以跳轉到任何的Activity

將結果返回給調用者的{@link#startActivity(Intent,Bundle)}版本。這個*只支持View和Fragments

向所有感興趣的廣播接收機廣播給定的意圖。這個調用是異步的;它立即返回,在接收器運行時,您將繼續*執行。沒有從接收器傳播結果,並且接收器不能中止廣播。如果希望*允許接收者傳播結果或中止廣播,則必須*使用以下命令發送廣播

向所有感興趣的BroadcastReceiver廣播給定的意圖,一次一個*地傳送它們,以允許更多的優選接收器在將*廣播傳送給不太優選的接收器之前使用*廣播。這個*調用是異步的;它立即返回,在接收器運行時,您將繼續*執行。

Register a BroadcastReceiver to be run in the main activity thread.  The
* <var>receiver</var> will be called with any broadcast Intent that
* matches <var>filter</var>, in the main application thread.

註冊要在主活動線程中運行的BroadcastReceiver,在主應用程序線程中。

取消註冊之前註冊的廣播接收器。已爲此廣播接收器註冊的所有過濾器將被刪除。

 

請求啓動給定的應用程序服務。Intent*應該包含要啓動的特定服務*實現的完整類名,或者包含要作爲目標的特定包名。如果*Intent的指定較少,它將記錄關於這個的警告。在這種情況下,可以使用任何*多個匹配服務。如果這個服務*還沒有運行,它將被實例化並啓動(如果需要的話,爲它創建一個*進程);如果它正在運行,那麼它仍然在運行。

{@link#startService(Intent)}類似,但是隱式承諾一旦開始運行,服務將調用{@link android.app.Service#startFore.(int,android.app.Not.)*startFore.(int,android.app.Not.)}。該服務被給予*與ANR時間間隔相當的時間量,否則系統*將自動停止服務並聲明應用程序ANR。

前臺服務

停止服務

連接到應用程序服務,如果需要,創建它。這定義了應用程序和服務之間的依賴關係。給定*<var>conn</var>在創建服務對象時將接收該服務對象,如果該服務對象死亡並重新啓動,則被*告知。只要調用上下文存在,系統就會認爲服務是必需的。例如,如果此上下文是停止的活動,則服務*不需要繼續運行,直到活動恢復爲止。

從應用程序服務斷開連接。當服務重新啓動時,您將不再接收調用,並且現在允許服務在任何時間停止。

按名稱將句柄返回到系統級服務

判斷權限

判斷上下文是否受限制


指示此上下文的存儲API是否由*設備保護存儲支持。

指示此上下文的存儲API是否由*憑證保護的存儲支持。

如果上下文可以加載不安全的資源(例如字體),則返回true。

總結:通過這些方法可以看出Context作出了很多Activity,BroadcastReceiver,service以及文件本地緩存存儲的實現接下來研究研究Activity都封裝了一些什麼方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章