【问题标题】:Toast.makeText ANRToast.makeText ANR
【发布时间】:2013-09-28 00:12:00
【问题描述】:

我收到了一个似乎来自 Toast.makeText 的 ANR:

DALVIK 线程:(互斥体:tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0) “主要”prio=5 tid=1 暂停 | group="main" sCount=1 dsCount=0 obj=0x40163600 自我=0x12620 | sysTid=4197 nice=0 sched=0/0 cgrp=默认句柄=-1345338264 | schedstat=( 149532214000 43042125000 324000 ) utm=13923 stm=1030 核心=0 在 android.graphics.Matrix.native_create(本机方法)在 android.graphics.Matrix.(Matrix.java:49) 在 android.view.View.(View.java:1852) 在 android.view.View.(View.java:2411) 在 android.view.ViewGroup.(ViewGroup.java:365) 在 android.widget.LinearLayout.(LinearLayout.java:156) 在 android.widget.LinearLayout.(LinearLayout.java:152) 在 java.lang.reflect.Constructor.constructNative(Native Method) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:416) 在 android.view.LayoutInflater.createView(LayoutInflater.java:576) 在 com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 在 android.view.LayoutInflater.onCreateView(LayoutInflater.java:644) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:457) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:391) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:347) 在 android.widget.Toast.makeText(Toast.java:230) 在 android.widget.Toast.makeText(Toast.java:253) 在 com.anthonymandra.framework.ViewerActivity.onActivityResult(ViewerActivity.java:802) 在 android.app.Activity.dispatchActivityResult(Activity.java:4581) 在 android.app.ActivityThread.deliverResults(ActivityThread.java:2814) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:2861) 在 android.app.ActivityThread.access$1000(ActivityThread.java:122) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:132) 在 android.app.ActivityThread.main(ActivityThread.java:4123) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:491) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 在 dalvik.system.NativeStart.main(Native Method)

这是从 onActivityResult 中调用的代码行:

Toast.makeText(this, R.string.save_success, Toast.LENGTH_SHORT).show();

任何人都知道为什么 Toast 可能会导致 ANR,或者如果我误读了这可能真的有什么问题吗?谢谢!

【问题讨论】:

  • 你能从你调用 Toast 的地方发布一些代码吗?

标签: android freeze android-anr-dialog android-toast


【解决方案1】:

您应该使用getResources(),而不是直接调用R.string,然后像下面这样

String strSuccess = getString(R.string.save_success);
Toast.makeText(this, strSuccess, Toast.LENGTH_SHORT).show();

Toast.makeText(this, getString(R.string.save_success),Toast.LENGTH_SHORT).show();

Read more

【讨论】:

  • 为什么你会建议这个? makeText 的来源也在做同样的事情__return makeText(context, context.getResources().getText(resId), duration);
  • @Anthony,我编辑了我的答案。请清理您的项目并再次尝试运行它。
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多