【问题标题】:StrictMode violation when using a phone number in a TextView在 TextView 中使用电话号码时违反 StrictMode
【发布时间】:2015-10-05 22:38:00
【问题描述】:

使用参数 android:autoLink="phone" 创建包含带有电话号码的 TextView 的布局时,存在 StrictModeDiskRead 冲突。

这是使用 com.android.support:appcompat-v7:22.2.0

删除 autoLink 参数会导致不发生冲突。

有没有办法解决这个问题?

堆栈跟踪:

D/StrictMode:违反 StrictMode 策略; ~持续时间=108 毫秒: android.os.StrictMode$StrictModeDiskReadViolation:策略=31 违规=2 在 android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135) 在 libcore.io.BlockGuardOs.open(BlockGuardOs.java:106) 在 libcore.io.IoBridge.open(IoBridge.java:393) 在 java.io.RandomAccessFile.(RandomAccessFile.java:118) 在 java.io.RandomAccessFile.(RandomAccessFile.java:150) 在 java.util.zip.ZipFile.(ZipFile.java:149) 在 java.util.jar.JarFile.(JarFile.java:187) 在 libcore.net.url.JarURLConnectionImpl.openJarFile(JarURLConnectionImpl.java:136) 在 libcore.net.url.JarURLConnectionImpl.findJarFile(JarURLConnectionImpl.java:113) 在 libcore.net.url.JarURLConnectionImpl.connect(JarURLConnectionImpl.java:82) 在 libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:215) 在 java.net.URL.openStream(URL.java:470) 在 java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:432) 在 java.lang.Class.getResourceAsStream(Class.java:1037) 在 com.android.i18n.phonenumbers.PhoneNumberUtil.loadMetadataFromFile(PhoneNumberUtil.java:585) 在 com.android.i18n.phonenumbers.PhoneNumberUtil.getMetadataForRegion(PhoneNumberUtil.java:1925) 在 com.android.i18n.phonenumbers.PhoneNumberUtil.parseHelper(PhoneNumberUtil.java:2766) 在 com.android.i18n.phonenumbers.PhoneNumberUtil.parseAndKeepRawInput(PhoneNumberUtil.java:2679) 在 com.android.i18n.phonenumbers.PhoneNumberUtil.parseAndKeepRawInput(PhoneNumberUtil.java:2668) 在 com.android.i18n.phonenumbers.PhoneNumberMatcher.parseAndVerify(PhoneNumberMatcher.java:418) 在 com.android.i18n.phonenumbers.PhoneNumberMatcher.extractMatch(PhoneNumberMatcher.java:310) 在 com.android.i18n.phonenumbers.PhoneNumberMatcher.find(PhoneNumberMatcher.java:240) 在 com.android.i18n.phonenumbers.PhoneNumberMatcher.hasNext(PhoneNumberMatcher.java:652) 在 android.text.util.Linkify.gatherTelLinks(Linkify.java:454) 在 android.text.util.Linkify.addLinks(Linkify.java:230) 在 android.widget.TextView.setText(TextView.java:3749) 在 android.widget.TextView.setText(TextView.java:3671) 在 android.widget.TextView.(TextView.java:1270) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:44) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:40) 在 android.support.v7.internal.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 在 android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:802) 在 android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:832) 在 android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 在 android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:172) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 在 android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397)

编辑:我现在使用 ViewStub 按需加载此视图,因此它不会减慢应用程序的正常加载速度

【问题讨论】:

    标签: android android-strictmode


    【解决方案1】:

    stacktrace 看起来确实很正常。至少,它不是你的代码,而是系统。

    来自the docs

    但不要觉得有必要修复 StrictMode 找到的所有内容。特别是,在正常的活动生命周期中,许多磁盘访问情况通常是必要的。使用 StrictMode 查找您不小心做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2018-06-11
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多