原创 Kotlin ? !! ?:含義
Kotlin中: 1. ?代表該值可爲空 camera?.stopPreview() 如果camera爲空,則不執行後面的程序;若不爲空,則執行後面的程序; 2. !!表示該值一定不爲空 3. ?: 與java三目運算符?:類似,但寫法
原创 startActivities(intents)注意點
若有兩個Intent採用startActivities方式啓動, Intent[0] = new Intent(this,TestActivity1.class); Intent[1] = new Intent(this,TestActi
原创 APKTool 使用
1.java -jar apktool.jar d -f test.apk -o test test.apk要解析的apk, -o test 設置輸出目錄, apktool.jar 是工具名稱 解析出res目錄和Manifest 2.
原创 Android studio 編譯NDK--使用cmake
以編譯LibJpeg爲例,方便理解。 1.把下載下來的libjpeg庫中的所有文件都放在src/main/cpp 文件夾下: 2.libjpeg庫中已經寫好了CMakeLists.text,只需要引用一下就可以了,如果沒有則需要自己編寫
原创 ListView和RecyclerView中item長按後拖拽
由於ListView在Dialog裏面,所有用WindowManager的方式不合適,又從網上參考了一些資料後實現: 主要參考大神:https://github.com/1993hzw/Androids/blob/master/READM
原创 特殊問題:RelativeLayout中的最後一個控件的layout_marginBottom無效的問題
出現此問題的前提是:在ViewPager+fragment實現的頁面切換,在其中一個fragment的佈局中,根佈局是RelativeLayout; 解決方式:按照網上所說的方法在最後添加一個寬高爲0的View;但此時不行,我上一個佈局如
原创 RxJava 源碼分析
個人理解,僅供參考! 例子: Observable observable = Observable.create(new ObservableOnSubscribe<String>() { @O
原创 項目中遇到的關於RecyclerView界面刷新問題
實現RecyclerView帶過濾功能遇到的問題 復現路徑:首先沒有過濾出任何元素,界面顯示空白,此時很正常,然後清楚過濾關鍵字,此時應該顯示全部數據,但是卻顯示空白,onBindViewHolder()已經調用。 最後發現是由於調用了s
原创 layout_weight屬性
layout_weight屬性是LinearLayout中的屬性 如果是水平方向,則要看layout_width屬性;如果是垂直方向,則要看layout_height屬性; 以水平方向舉例: layout_width="match_par
原创 Thread.start 和run的區別
thread.start()是啓動線程,使線程進入就緒狀態,啓動一個新線程,在新線程中執行run方法;調用start()方法後,,可以繼續執行下面的代碼; run是thread中的一個方法,調用thread.run()後,需要等待run方
原创 Thread和Runnable區別
Thread是類,Runnable是一個接口,runnable可以突破單繼承的限制 runnable更容易實現資源共享,能被多個相同代碼的線程去處理同一個資源; 比如:自定義的runnable->runnable1 new Thread(
原创 requestLayout 和 invalidate區別
View繪製分三個步驟,順序是:onMeasure,onLayout,onDraw。調用invalidate方法只會執行onDraw方法;調用requestLayout方法只會執行onMeasure方法和onLayout方法,並不會執行o
原创 TCP
TCP採用三次握手確認建立一個連接; 位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置)
原创 IntentService
IntentService,可以看做是Service和HandlerThread的結合體,在完成了使命之後會自動停止,適合需要在工作線程處理UI無關任務的場景。 IntentService內部使用的是HandlerThread 和Hand
原创 OKHttp3源碼解析
總體流程: okHttpClient = new OkHttpClient.Builder() .addInterceptor(new TokenInterceptor()) .connectTimeou