Android無享商城問題記錄

@鐘建新

23、Glide 加載七牛視頻縮略圖問題

1.直接使用Glide 加載的效果,圖片按照視頻原來大小顯示

image.png

2.在原來視頻 Url 拼接 ?vframe/jpg/offset/1 獲取縮略圖

clipboard.png

22、Activity SingleTask啟動模式

MainActivity 設(shè)置為啟動頁,并且啟動launchModel=“singleTask”, 跳轉(zhuǎn)到其他頁面后按 HOME 鍵回到桌面,再點擊 app 圖標(biāo)進入,顯示的不是最后一次打開的頁面,而是 MainActivity 頁面。

原因:SingleTask 表示 activity 棧中只有一個實例,而且 MainActivity 又是啟動頁,所以點擊 app 圖標(biāo)進入 app, 相當(dāng)于重新打開 MainActivity,這時在 MainActivity 上的 activity 會被彈出銷毀。

解決:使用一個專門的啟動頁(StartActivity)作為 app 啟動頁,app 啟動通過 StartActivity 跳轉(zhuǎn)到 MainActivity, 并把 StartActivity 銷毀

<activity android:name=".features.system.StartActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<activity

android:name=".features.common.MainActivity"

android:configChanges="orientation|screenSize"

android:launchMode="singleTask">

<!--<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>-->

</activity>

21、Kotlin 獲取 String 字節(jié)數(shù)

fun String.bytesLength(): Int {

return byteInputStream().available()

}

20、EditText#setFilters() 限制輸入字節(jié)數(shù)

edittext.addTextChangedListener(new TextWatcherWrapper() {

@Override

public void afterTextChanged(Editable s) {

String string = s.toString().trim();

//限定輸入框最多輸入32個字節(jié)

int inputLength = string.length();

int byteLength = string.getBytes().length;

if (byteLength >= 32) {

edittext.setFilters(new InputFilter[]{new InputFilter.LengthFilter(inputLength)});

} else {

edittext.setFilters(new InputFilter[]{new InputFilter.LengthFilter(32)});

}

edittext.setSelection(edittext.getText().toString().length());

}

});

19、Glide加載原圖OOM

直接使用into(imageView) 加載圖片模糊改為

GlideApp.with(mContext)

.load(item)

.into(new SimpleTarget<Drawable>() {

@Override

public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {

binding.iv.setImageDrawable(resource);

}

});

加載原圖

4.4手機(1280x720)警告OOM:

image.png

優(yōu)化前:

image.png

優(yōu)化:

GlideApp.with(mContext)

.load(item)

.override(IMAGE_WIDTH)//設(shè)置最大寬度為屏幕寬度

.skipMemoryCache(true)//跳過內(nèi)存緩存

.diskCacheStrategy(DiskCacheStrategy.RESOURCE)

.into(new SimpleTarget<Drawable>() {

@Override

public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {

binding.iv.setImageDrawable(resource);

}

});

優(yōu)化后:

image.png

18、DataBinding 自定義View的屬性

@BindingAdapter({"app:nestedScrollingEnabled"})

public static void setNestedScrollingEnabled(RecyclerView recyclerView, boolean enabled) {

recyclerView.setNestedScrollingEnabled(enabled);

}

在xml中要加 @{} 配合使用,否則提示沒有 app:nestedScrollingEnabled這個屬性
app:nestedScrollingEnabled="@{false}"

17、靜態(tài)變量

場景:CartUtil中有個isNeedChange靜態(tài)變量,根據(jù)這個變量判斷是否需要刷新購物車。在第一次打開app時可以正常執(zhí)行,在直接按返回鍵退出在進來就不能正常刷新購物車了,原因是CartUtil沒有隨著app退出而銷毀(類沒有被卸載,app退出了,進程還在內(nèi)存中,沒有被系統(tǒng)殺死),isNeedChange在內(nèi)存中的狀態(tài)還是false。解決:1)不用靜態(tài)變量 2)退出app是手動航設(shè)置isNeedChange=true

注意:退出Activity不等共同于退出程序(進程)

16、Kotlin: java.util.NoSuchElementException: Collection contains no element matching the predicate.

list.first({})改list.firstOrNull({})

15、Android8.0 報錯 java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

只有全屏不透明的activity才能設(shè)置方向

解決:<item name="android:windowIsTranslucent">false</item>

<item name="android:windowDisablePreview">true</item>

14、橫豎屏切換導(dǎo)致activity重走生命周期解決辦法:在清單文件的Activity里配置android:configChanges="orientation|screenSize"

13、華為榮耀6X:下載的視頻本地?zé)o法播放(手機播放器閃退)。文件名:wx_2018-05-29 16:59:13_0.mp4。原因是手機不支持一些特殊符合:"/:*?<>|" 文件名包存在“:”所以不支持

12、序列化:把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化。

反序列化:把字節(jié)序列恢復(fù)為對象的過程稱為對象的反序列化。

11、java kotlin 浮點計算進度丟失問題(101*29.8)。使用BigDecimal解決

10、1) 第一次請求權(quán)限時,用戶拒絕了,下一次:shouldShowRequestPermissionRationale() 返回 true,應(yīng)該顯示一些為什么需要這個權(quán)限的說明

2)第二次請求權(quán)限時,用戶拒絕了,并選擇了“不在提醒”的選項時:shouldShowRequestPermissionRationale() 返回 false

9、kotlin recycleview adapter 多布局

item 要是可空類型。

否則會報錯java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter item

8、kotlin基礎(chǔ)泛型類,子類不需要泛型的情況

7、new ArrayList<>(list)

6、kotlin泛型

out:小的可以賦給大的

class TypedClass<out T>()

val t1 = TypedClass<String>()

val t2: TypedClass<Any> = t1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,812評論 25 709
  • 面試必背 會舍棄、總結(jié)概括——根據(jù)我這些年面試和看面試題搜集過來的知識點匯總而來 建議根據(jù)我的寫的面試應(yīng)對思路中的...
    luoyangzk閱讀 7,164評論 6 173
  • 文|瑩瑩 在你枯水的青春里,你也許曾這樣無望地喜歡過一個人。 你像是淋了一場大雨,他的那場雨下得淋漓盡致。 而你,...
    瑩瑩in閱讀 901評論 10 19
  • 心莫名其妙的歡喜不是因為燈光的亢奮不是因為花影的重疊或許獨自在風(fēng)中沉醉是最合情的緣由
    Bohemian_e6af閱讀 201評論 0 0
  • 已經(jīng)有一段時間沒有進行周檢視了,從第一個90天踐行完成后,就對自己放松了下來,很多方面都沒有繼續(xù)執(zhí)行。在加入了...
    原來如齒閱讀 124評論 0 0

友情鏈接更多精彩內(nèi)容