美文网首页
Android开发中的疑难杂症

Android开发中的疑难杂症

作者: 全全是大王 | 来源:发表于2022-01-04 17:09 被阅读0次

开发过程中遇到的疑难杂症 持续更新中....

问题1:SP获取getStringSet getAll的对象不可以直接操作修改

java.util.ConcurrentModificationException
       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
       at java.util.HashMap$KeyIterator.next(HashMap.java:814)
       at com.android.internal.util.XmlUtils.writeSetXml(XmlUtils.java:350)
       at com.android.internal.util.XmlUtils.writeValueXml(XmlUtils.java:688)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:295)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:264)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:230)
       at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:187)
       at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:597)
       at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:51)
       at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:512)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

注: We had seen this exception when using the SharedPreferences getStringSet method. This method returns a set that should not be modified. Modifying this set while the SharedPreferences object is being serialized to flash will produce a ConcurrentModificationException.
This will also happen if you use getAll and modify the returned map.

问题2:Activity 在onResume 崩溃

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3623)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3663)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2904)
  at android.app.ActivityThread.-wrap11 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1624)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6549)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:451)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:888)
Caused by: java.lang.IllegalArgumentException: 
  at android.os.Parcel.readException (Parcel.java:2017)
  at android.os.Parcel.readException (Parcel.java:1959)
  at android.app.IActivityManager$Stub$Proxy.isTopOfTask (IActivityManager.java:8510)
  at android.app.Activity.isTopOfTask (Activity.java:6336)
  at android.app.Activity.onResume (Activity.java:1329)
  at androidx.fragment.app.FragmentActivity.onResume (FragmentActivity.java:455)

出现崩溃设备 7.0 、8.0、 8.1

修复方法:
onResume 增加防护

 @Override
    protected void onResume() {
        try {
            super.onResume();
        } catch (Exception e) {
            resumeCallActivity();
            e.printStackTrace();
        }
  }

 private void resumeCallActivity() {
        try {
            Class spClass = Activity.class;
            Field callField = spClass.getDeclaredField("mCalled");
            callField.setAccessible(true);
            callField.setBoolean(CustomerSearchActivity.this, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

问题3: EditText requestFocus() 报错

 at com.android.internal.util.SyncResultReceiver.waitResult(SyncResultReceiver.java:60)
    at com.android.internal.util.SyncResultReceiver.getIntResult(SyncResultReceiver.java:68)
    at android.view.autofill.AutofillManager.ensureServiceClientAddedIfNeededLocked(AutofillManager.java:1847)
    at android.view.autofill.AutofillManager.notifyViewEnteredLocked(AutofillManager.java:966)
    at android.view.autofill.AutofillManager.notifyViewEntered(AutofillManager.java:950)
    at android.view.autofill.AutofillManager.notifyViewEntered(AutofillManager.java:901)
    ...

崩溃机型:android 10
崩溃原因:自动填充问题
修复方法:屏蔽自动填充

android:importantForAutofill="no"

问题4:反向语言国家 布局反向

    android:layoutDirection="locale"

相关文章

  • iOS直播音频噪音处理

    参考资料:Android音频开发(1):基础知识 如何解决直播中的播放杂音、噪音、回声问题 | 直播疑难杂症排查

  • Android开发中的疑难杂症

    开发过程中遇到的疑难杂症 持续更新中.... 问题1:SP获取getStringSet getAll的对象不可以直...

  • Android开发中的各种疑难杂症

    2020-01-02 Android Studio Git 上传报错Push rejected Push to ...

  • Android开发中的各种疑难杂症2

    Q:Gradle官方下载地址 A:https://services.gradle.org/distribution...

  • android 中的疑难杂症

    温故而知新,没事翻出来看看有好处 安卓开发中遇到的奇奇怪怪的问题

  • Android的问题

    Android蹲坑的疑难杂症集锦一 - 简书 Android App 启动页(Splash)黑/白闪屏现象产生原因...

  • 在Android中使用Html5

    1.在Android中和和H5的的交互: Android中H5开发 Android和js交互 开发中存在nativ...

  • Android 动画总结

    在日常的Android开发中,经常会使用到动画,这里就对Android开发中的动画做一下总结 Android 动画...

  • Android 动画总结

    在日常的Android开发中,经常会使用到动画,这里就对Android开发中的动画做一下总结。 Android 动...

  • 科普 - 收藏集 - 掘金

    5 个 Android 开发中比较常见的内存泄漏问题及解决办法 - Android - 掘金在Android开发中...

网友评论

      本文标题:Android开发中的疑难杂症

      本文链接:https://www.haomeiwen.com/subject/vtzqcrtx.html