[持續更新]開發筆記

NO IMAGE

項目越是要到Deadline,人越是High起來了,總結一波壓壓驚


我發現,真的,才工作一年,但是,好多之前搞過的東西再想用時都忘了,沒有總結。所以有了這篇文章,算是做筆記給未來的自己回顧,沒有任何高深的技術,只是自己開發中遇到的問題和解決方法或者是一點點想法和感悟。

1. Android通知Notication

Android8.0 引入了Notification Channel來設置通知優先級。我參與的項目中前人封裝了消息通知操作,只需傳入內容和優先級來創建通知。

我使用時就遇到了不管怎麼設置,通知優先級始終很低,在通知欄裡默認摺疊狀態的坑。我一度以為是我們廠的ROM問題,把通知自動摺疊了。
直到我去認真又讀了一遍官方文檔,終於找到了思路。

Notification的文檔有這麼一段原文:

Because you must create the notification channel before posting any notifications on Android 8.0 and higher, you should execute this code as soon as your app starts. It’s safe to call this repeatedly because creating an existing notification channel performs no operation.

然後在Notification Channel的文檔中還有詳細說明:

Creating an existing notification channel with its original values performs no operation, so it’s safe to call this code when starting an app.

找到項目封裝的方法,發現確實每次發消息都先創建Channel,但是Channel的構造方法

public NotificationChannel(String id, CharSequence name, @Importance int importance)

第一個參數id卻始終傳入PackageName。根據文檔,拿同一個id創建Channel,不會執行任何操作。
最後我的解決方案是id字符串由PackageName和通知優先級拼接而成。

2. 設置dialog背景蒙層

WindowManager.LayoutParams lp=this.getWindow().getAttributes();
lp.dimAmount=0.5f;
this.getWindow().setAttributes(lp);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

版權聲明:此為CSDN博主「孫先森i」的原創內容,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:blog.csdn.net/qq_38356174…

3. 軟鍵盤自動彈出

調用軟鍵盤必須等待佈局加載完成。

在生命週期 onCreate() 中立即調用 showSoftInput() 是不會生效的。想要在頁面一啟動的時候就彈出鍵盤,可以在 Activity 上,設置 android:windowSoftInputMode 屬性來完成,或者做一個延遲加載,View.postDelayed() 也是一個解決方案。

4. DataBinding在xml中使用

//可以這樣引用生命在data中的變量
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
//可以引用Resource
android:padding="@{large? @dimen/largePadding : @dimen/smallPadding}"
//甚至還可以根據給定參數格式化字符串,來自官方文檔,但是我沒有嘗試過
android:text="@{@string/nameFormat(firstName, lastName)}"

相關文章

面向開發的測試技術(三):Web自動化測試

面向開發的測試技術(二):性能測試

面向開發的測試技術(一):Mock

Java學習筆記