From ac226e3301a5ff855696a0242ca0cee795ee9ff7 Mon Sep 17 00:00:00 2001 From: juntao Date: Tue, 5 Jan 2021 12:02:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AA=E9=80=80=201.=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A7=E5=88=86=E7=B1=BB=E9=A1=B5=E5=81=B6?= =?UTF-8?q?=E5=8F=91=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88=E9=97=AA=E9=80=80?= =?UTF-8?q?=202.=20=E4=BF=AE=E5=A4=8D=E5=A4=9A=E8=BF=9B=E7=A8=8B=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=81=B6=E5=8F=91=E7=9A=84=E7=A9=BA=E6=8C=87=E9=92=88?= =?UTF-8?q?=E9=97=AA=E9=80=80=203.=20=E6=8D=95=E6=8A=93=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E5=85=B3=E9=97=AD=20WebView=20=E5=AE=89=E5=85=A8=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=20API=20=E9=97=AA=E9=80=80=E5=BC=82=E5=B8=B8=204.=20?= =?UTF-8?q?=E6=8D=95=E6=8A=93=E9=80=9A=E7=94=A8=E5=88=97=E8=A1=A8=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E6=97=B6=E5=A4=9A=E7=BA=BF=E7=A8=8B=E8=AF=BB=E5=86=99?= =?UTF-8?q?=E9=80=A0=E6=88=90=E7=9A=84=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/PackageUtils.java | 20 ++++++++++++------- .../gh/gamecenter/baselist/ListAdapter.java | 12 ++++++----- .../category/CategoryDirectoryFragment.kt | 2 +- .../halo/assistant/fragment/WebFragment.java | 6 +++++- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 9b18c5d367..059bd43654 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -516,15 +516,21 @@ public class PackageUtils { * @return 进程名 */ public static String obtainProcessName(Context context) { - final int pid = android.os.Process.myPid(); - ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List listTaskInfo = am.getRunningAppProcesses(); - if (listTaskInfo != null && !listTaskInfo.isEmpty()) { - for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { - if (info != null && info.pid == pid) { - return info.processName; + try { + final int pid = android.os.Process.myPid(); + ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List listTaskInfo = am.getRunningAppProcesses(); + if (listTaskInfo != null && !listTaskInfo.isEmpty()) { + for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { + if (info != null && info.pid == pid) { + return info.processName; + } } } + } catch (Exception e) { + // 遇到异常了让这次调用正常执行 + e.printStackTrace(); + return BuildConfig.APPLICATION_ID; } return null; } diff --git a/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java b/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java index 4dc9a36498..c0732ab620 100644 --- a/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/baselist/ListAdapter.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.os.AsyncTask; +import com.gh.common.util.ExtensionsKt; import com.lightgame.adapter.BaseRecyclerAdapter; import java.util.ArrayList; @@ -20,7 +21,6 @@ public abstract class ListAdapter extends BaseRecyclerAdapter { public static final int FOOTER_ITEM_COUNT = 1; public static final int TOP_ITEM_COUNT = 1; - // TODO mEntityList 适配多线程读写 protected List mEntityList = new ArrayList<>(); protected boolean mIsOver; @@ -47,6 +47,7 @@ public abstract class ListAdapter extends BaseRecyclerAdapter { return; } + // TODO 复用线程 new AsyncTask() { @Override protected DiffUtil.DiffResult doInBackground(Void... voids) { @@ -66,8 +67,9 @@ public abstract class ListAdapter extends BaseRecyclerAdapter { if (oldItemPosition >= mEntityList.size()) return false; if (newItemPosition >= updateData.size()) return false; - DataType oldItem = mEntityList.get(oldItemPosition); - DataType newItem = updateData.get(newItemPosition); + // TODO 看看有什么方式可以避免多线程访问 mEntityList (所有 ListAdapter 共用一个线程?) + DataType oldItem = ExtensionsKt.safelyGetInRelease(mEntityList, oldItemPosition); + DataType newItem = ExtensionsKt.safelyGetInRelease(updateData, newItemPosition); return ListAdapter.this.areItemsTheSame(oldItem, newItem); } @@ -76,8 +78,8 @@ public abstract class ListAdapter extends BaseRecyclerAdapter { if (oldItemPosition >= mEntityList.size()) return false; if (newItemPosition >= updateData.size()) return false; - DataType oldItem = mEntityList.get(oldItemPosition); - DataType newItem = updateData.get(newItemPosition); + DataType oldItem = ExtensionsKt.safelyGetInRelease(mEntityList, oldItemPosition); + DataType newItem = ExtensionsKt.safelyGetInRelease(updateData, newItemPosition); return ListAdapter.this.areContentsTheSame(oldItem, newItem); } }); diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt index 6bce7bb8eb..17eb4a7231 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryDirectoryFragment.kt @@ -28,7 +28,7 @@ class CategoryDirectoryFragment : ListFragment= Build.VERSION_CODES.O) { - settings.setSafeBrowsingEnabled(false); + try { + settings.setSafeBrowsingEnabled(false); + } catch (AbstractMethodError e) { + e.printStackTrace(); + } } mTimeElapsedHelper = new TimeElapsedHelper(this);