記錄一些代碼小細節
1.Android 啓動頁android.intent.action.MAIN,啓動模式不能設置爲singleTask
這樣會使你每次回到手機主頁,再次進入APP,回到啓動頁。
如果真的要將之前的啓動頁設置singleTask。可以將啓動頁換成一張空白頁。
空白頁上直接調轉到之前的啓動頁上。
例子:我之前的啓動頁是一張登錄頁面。登錄頁面需要將啓動模式設置爲singleTask.
所以當前啓動頁設置爲空白頁,直接跳轉到登錄頁,登錄頁的啓動模式還是設置singleTask,這樣就不會出錯了
2.關於文件讀取問題
先排除文件過大,文件不存在和讀取權限問題。
然後接下來就是Api29Q版本的問題了。問題有以下2 個:
open failed: EACCES (Permission denied)和BitmapFactory.decodeFile問題 。
因爲N版本文件的讀取方式發生了改變,如果想繼續使用原先的方式讀取。在AndroidManifest.xml加入以下代碼:
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
參考網址:Android Q(10.0 API29)版本新特性和兼容性適配
3.關於Http和Https的問題
這個也是Api27P版本之後的問題。27版本之後如果不經過特殊處理,網絡方式必須是https
但也有方式在高版本使用http。
先在res文件中創建xml目錄,然後在其下創建xml文件。文件內容以下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
最後在AndroidManifest.xml加入以下代碼:
<application
...
android:networkSecurityConfig="@xml/network_security_config" />
參考網址:網絡請求http/https問題
4.關於連續點擊Toast不顯示問題
if (toast == null) {
toast = Toast.makeText(mContext, s, Toast.LENGTH_SHORT);
} else {
//解決連續點擊toast不顯示問題
toast.cancel();
toast = Toast.makeText(mContext, s, Toast.LENGTH_SHORT);
}
toast.show();
5.關於使用AndroidAutoSize後,系統的複製粘貼,顯示的特別小的問題
關於這個問題,官方推薦是使用副單位。如果在已經成型的項目裏,這個方法不可行。然後我就找到了折中的方法。
先在彈出複製粘貼彈窗的時候取消適配,然後在點擊屏幕的時候確定適配。
isCancleAdapter 判斷是否取消適配
edText.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
//取消適配
AutoSize.cancelAdapt((Activity) mContext);
isCancleAdapter = true;
}
});
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//點擊屏幕,如果有點擊適配的時候,纔去重新適配
if (isCancleAdapter){
AutoSize.autoConvertDensityOfGlobal((Activity) mContext);
isCancleAdapter = false;
}
return super.dispatchTouchEvent(ev);
}
未完待續。。。