原创 ExceptionInInitializerError異常

因爲這個異常時在靜態變量初始化發生異常時拋出的,所以首先我們瞭解一下靜態變量初始化的問題。 靜態變量初始化 提到靜態變量初始化,又不得不提JVM的類加載機制,把描述類的數據從class文件加載到內存,並對數據進行校驗,轉換解析和初始化,最

原创 如何判斷Activity是否在運行?

如下這場景我相信很多人都遇到過,這段話也是從某個帖子截取出來的: 從Activity A 啓動一個線程去進行網絡上傳操作,在A中設立一個回調函數,當上傳操作完成以後,在A的這個回調函數中會彈出一個對話框,用來顯示回調信息。可是當上傳的過

原创 Android控件WebView實現完整截圖

//android 5.0 之後需要開啓瀏覽器的整體緩存才能截取整個Web if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { WebView.enable

原创 Android 中的 Enum 到底佔多少內存?該如何用?

聽說過一些論調,Enum 不該用啊,佔用了很大的 dex 文件,佔用很多內存。而到底確切佔用了多少內存,沒說。本文分析了枚舉所佔用的精確的內存大小,方便大家權衡選擇,希望對大家有幫助。 關於 Enum 的使用 Enum 需要佔

原创 gradle compileOnly的使用場景

Android studio升級到3.0之後,依賴方式也有了更新。 這是2.x 圖片.png 來源網絡 這是3.0 圖片.png 來源網絡 其中2.x版本的 Provided 變成了 compileOnly 這個命令的意思是 只在編

原创 Bitmap 硬盤上的存儲格式與在內存的展開格式區別

知識普及系列: 圖片有兩種使用的場景:一種是在硬盤上的存儲格式,一個是在內存的展開格式。 一、在內存中的圖片 因爲需要知道圖片的所有信息,所有在內存中,圖片一般是展開的。那以帶透明的Bitmap來說。這裏有一些概念。 1.像素

原创 新建android項目報錯,Rejecting re-init on previously-failed...

錯誤提示 03-20 14:54:57.718 7909-7909/? I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<android.s

原创 StatusBar 設置

隨着Android版本的迭代,開發者對狀態欄等控件有了更多的控制, google 一直在嘗試引入新的Api來滿足開發者的需求,但Api卻一直不夠完美,接口添加了很多,卻都不夠簡單或者說完美,算上第三方廠商的特色行爲,怎一個“亂”字

原创 android 中斷點續傳理解

斷點續傳用到的知識點:  1.http返回的code碼不爲200,可能爲206  2.使用RandomAccessFile設定文件大小並於指定位置開始讀數據[randomAccessFile.seek(position)]。     3.

原创 Android WebView加載網頁失敗異常處理

開發過程中會遇到WebView加載失敗的時候,會出現404、500、找不到網頁等錯誤,頁面顯示系統默認的錯誤界面。系統默認界面難看,而且也會暴露網頁地址不安全。所以我們需要對WebView加載失敗或錯誤進行處理,自定義一個統一樣式來加載失

原创 Android 截長圖

原理:Android 爲了提高滾動等各方面的繪製速度,可以爲每一個 View 建立一個緩存,使用 View.buildDrawingCache 爲自己的 View 建立相應的緩存, 這個 cache 就是一個 bitmap 對象。利用這

原创 Android MediaPlayer生命週期分析

摘要: MediaPlayer是Android平臺用於播放音頻/視頻/流媒體的類。它是基於狀態的。也就是說,MediaPlayer有一個內部的狀態,某些方法僅適用當Mediaplayer在某些狀態,即player在特定狀態。那麼Media

原创 Activity的管理機制

AMS提供了一個ArrayList mHistory來管理所有的activity,activity在AMS中的形式是ActivityRecord,task在AMS中的形式爲TaskRecord,進程在AMS中的管理形式爲ProcessRe

原创 Acitivity與ActivityRecord的關係

ActivityRecord是AMS調度Activity的基本單位,它需要記錄AndroidManifest.xml中所定義Activity的靜態特徵,同時, 也需要記錄Activity在被調度時的狀態變化,因此ActivityRecor

原创 Java中String接受的最大字符串的長度

java字符串String的最大長度,要分兩個階段,編譯階段及運行時階段   編譯階段: 我們在編寫源代碼的時候,如果使用 Sting str = "aaaa";的形式定義一個字符串,那麼雙引號裏面的ASCII字符最多隻能 有 65534