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);