Gaj*_*lur 1 android android-anr-dialog android-strictmode
我在某处读到,通过使用 StrictMode 我们可以避免 android 中的 ANR。我尝试过,下面是代码
public class MyApplication extends Application {
@Override
public void onCreate() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyFlashScreen()
.penaltyDeath()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.build());
super.onCreate();
}
Run Code Online (Sandbox Code Playgroud)
我尝试生成 ANR 以用于测试目的,如下所示:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("kishan","onTouchEvent");
while(true) {}
}
Run Code Online (Sandbox Code Playgroud)
但屏幕上仍然出现了 ANR。如何使用StrictMode避免ANR?是否可以?
什么是ANR?
当 Android 应用程序的 UI 线程阻塞时间过长时,会触发“应用程序未响应”(ANR) 错误。如果应用程序位于前台,当 Android 检测到以下情况之一时,将显示特定应用程序的 ANR 对话框:
如何避免ANR?
通过保持应用程序的主线程响应,您可以防止向用户显示 ANR 对话框。
onCreate()和onResume()。诊断 ANR:
StrictMode是一种开发人员工具,可检测应用程序主线程(接收 UI 操作并发生动画)上的意外磁盘或网络访问。您可以在应用程序或活动级别使用 StrictMode。
查看官方android开发者文档了解,如何修复ANR问题?
| 归档时间: |
|
| 查看次数: |
5218 次 |
| 最近记录: |