原创 Android——主線程的loop爲什麼不會造成死循環?

線程是一段可執行的代碼,當可執行代碼執行完成後,線程生命週期便該終止了,線程退出。而對於主線程,我們是絕不希望會被運行一段時間,自己就退出,那麼如何保證能一直存活呢?簡單做法就是可執行代碼是能一直執行下去的,死循環便能保證不會被退出。 M

原创 Dart operator重載操作符介紹

1. 概述 operator 是 Dart 的一個關鍵字,它和運算符(如=)一起使用,表示一個 運算符重載函數,在理解時可將operator和運算符(如operator=)視爲一個函數名。 使用 operator 重載運算符,是 Dar

原创 組件化入門——手把手寫一個Demo

組件化開發就是基於可重用的目的,將一個大的軟件系統分離,拆分成多個獨立的組件。組件可以是模塊、web資源、軟件包等。 最近想知道組件化是什麼東西,於是看了很多博客,設計到很多理論知識,但是越看越懵。還不如找個Demo學一下,學的過程又遇到

原创 Flutter中State的生命週期

State作爲StatefulWidget的邏輯和內部狀態的持有者. 一個StatefuleWidget類會對應一個State類,在Widget生命週期內,當Widget被build或者Widget發生改變時,會同步讀取State的信息。

原创 自定義實現播放暫停Drawable

本文一步步解析自定義播放暫定 Drawable,該 Drawable 可以用於控件的背景,和自定義View是大同小異的。 這篇文章的來源是一個開源項目的動畫效果,我下載下來看了下,感覺是個入門自定義View很好的例子,所以寫了這篇文章~~

原创 Flutter——Dart中重載操作符operator介紹

1. 概述 operator 是 Dart 的一個關鍵字,它和運算符(如=)一起使用,表示一個 運算符重載函數,在理解時可將operator和運算符(如operator=)視爲一個函數名。 使用 operator 重載運算符,是 Dar

原创 自定義右上角數字圓點ImageView——NumImageView

我們經常會遇到需要在圖標的右上角顯示一個小紅點或者包含數字的小紅點,在網上搜羅了一番,然後決定自己來寫一個~~ 效果圖如下: 可以是圓點、數字加圓點、數字加橢圓 字體大小顏色和背景大小顏色都可以調整。 源碼地址:https://gi

原创 拍照並使用OkHttp上傳圖片到服務器

之前遇到需要上傳圖片到服務器的需要,特此記錄~ 首先是調用相機拍照,首先創建一個 imageUri,並作爲參數傳入intent,這個 imageUri就是拍照時候照片的存儲路徑,拍攝完後就可以從這個 imageUri 獲得照片的路徑等信息

原创 Activity狀態保存onSaveInstanceState()

當 Activity pause 或 stop時,Activity 的狀態會得到保留。 因爲當 Activity pause 或 stop時,Activity 對象仍保留在內存中 ,所以它的成員和當前狀態的所有信息仍處於活動狀態。 因此,

原创 Android——一個Demo帶你瞭解MVVM模式

最近學習MVVM模式,特此記錄~~ 本文目的: ①主要通過一個 MVVM的 Demo來了解一下我們在平時該怎麼使用它 ②對比 MVP和 MVVM的區別 好了,廢話不多說~開始吧   首先我們來看一下 MVP和 MVVM的結構圖: 圖片

原创 關於MediaPlayer播放音頻的使用及狀態管理

最近在app播放音頻的時候,時常出現 IllegalStateException,在網上看了別人寫的博客,想了解一下MediaPlayer的生命週期及使用時要注意的點,沒想到查的資料說法都不一樣(後面會指出),索性去看了官方文檔,特此記錄

原创 使用WifiLock報錯:WifiLock under-locked mylock

 在釋放鎖的時候,使用如下代碼: if(wifiLock.isHeld()){ wifiLock.release(); }

原创 前臺服務Service更新Notification進度條

在弄音樂播放的app的時候,我們時常需要用一個前臺Service來播放音樂,同時管理和更新Notification,而且,Notification的點擊事件需要用Broadcast來傳遞。 今天就手把手來看看如何在Service中管理No

原创 Bad notification posted from: Couldn't expand RemoteViews for: StatusBarNotification

在使用自定義Notificationd的時候報錯如下: android.app.RemoteServiceException: Bad notification posted from package xxx: Couldn't expa

原创 JVM內存模型

程序計數器(線程私有): 也有稱作PC寄存器。每個線程都有一個私有的程序計數器,程序計數器存放的是當前線程所執行的字節碼的行號指示器。當CPU需要執行指令時,需要從程序計數器中得到當前需要執行的指令所在存儲單元的地址,然後根據得到的地址