首页 > 其他分享 >android2.3新增API StrictMode介绍

android2.3新增API StrictMode介绍

时间:2023-04-30 21:10:34浏览次数:60  
标签:02 StrictMode API 线程 android2.3 日志


google在android2.3中新增了StrictMode API来设置对一个thread的策略(ui线程或者分线程),它主要检测了读写操作,访问网络,数据库读写等耗时的操作并将其以log或者dialog等形式打印出来。分析这些日志,我们可以尽快找出程序运行缓慢的原因进而优化代码,避免ANR(Application Not Responding)窗口的出现。

启用StrictMode
推荐的使用StrictMode的方式是,在开发阶段,打开它,在发布应用前,关闭它。
例如:在你的应用中,onCreate():



Java代码

android2.3新增API StrictMode介绍_访问网络

 

android2.3新增API StrictMode介绍_android_02

    1. public void onCreate() {   
    2.  
    3.   if (DEVELOPER_MODE) {    
    4.       StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //构造StrictMode   
    5.  
    6.               .detectDiskReads() //当发生磁盘读操作时输出   
    7.  
    8.               .detectDiskWrites()//当发生磁盘写操作时输出   
    9.  
    10.               .detectNetwork()  //访问网络时输出,这里可以替换为detectAll() 就包括了磁盘读写和网络I/O   
    11.  
    12.               .penaltyLog()  //以日志的方式输出   
    13.  
    14.               .build());   
    15.  
    16.       StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()   
    17.  
    18.               .detectLeakedSqlLiteObjects() //探测SQLite数据库操作   
    19.  
    20.          .penaltyLog() //以日志的方式输出   
    21.  
    22.               .penaltyDeath()   
    23.  
    24.               .build());   
    25.  
    26.   }   
    27.  
    28.   super.onCreate();   
    29.  
    30.





    当触发策略中的操作时系统会打印出一条StrictMode日志,格式如下:



    Java代码

    android2.3新增API StrictMode介绍_访问网络

     

    android2.3新增API StrictMode介绍_android_04

    android2.3新增API <wbr>StrictMode介绍



      1. 02-27 10:03:56.122: DEBUG/StrictMode(16210): StrictMode policy violation; ~duration=696 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2    
      2. 02 02-27 10:03:56.122: DEBUG/StrictMode(16210):     at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:745)




      另外说明两点:

      1.在android2.3版本直接在ui线程中访问网络会报错

      2.ANR窗口会在程序阻塞或者耗时超过5秒的运算后弹出 

      标签:02,StrictMode,API,线程,android2.3,日志
      From: https://blog.51cto.com/u_548275/6238220

      相关文章

      • MetaWeblog API
        MetaWeblogAPIMetaWeblogThefollowingmethodsaresupported:blogger.deletePostblogger.getUsersBlogsmetaWeblog.editPostmetaWeblog.getCategoriesmetaWeblog.getPostmetaWeblog.getRecentPostsmetaWeblog.newMediaObjectmetaWeblog.newPostmethodblog......
      • WordPress extended XML-RPC MetaWeblog API
        XML-RPCMetaWeblogAPI«WordPressCodexWordPress.orgWordPress.orgPluginsThemesPatternsLearnSupportDocumentationForumsNewsAboutGetInvolvedFivefortheFutureShowcaseMobileHostingOpenverseGetWordPressSearch......
      • API测试
        仍然不行。这是前端函数序列化后的提交的完整的xml数据<?xmlversion="1.0"encoding="UTF-8"?><methodCall><methodName>metaWeblog.newMediaObject</methodName><params><param><value><string>1......
      • 声明式API
        YAML文件,是Kubernetes声明式API所必须具备的一个要素一、声明式API的工作原理在Kubernetes项目中,一个API对象在Etcd里的完整资源路径,是由:Group(API组)、Version(API版本)和Resource(API资源类型)三个部分组成的。 Kubernetes对API对象的解析1apiVersion:batch/v......
      • 商品详情API接口如何获取淘宝数据
        淘宝是中国最大最受欢迎的电商平台之一,汇集了大量的商家和买家。在淘宝上热门商品的销量经常十分巨大,因此有些开发者和网站想要获取淘宝商品数据来进行一些分析。下面是一篇关于淘宝商品详情API接口获取淘宝数据的文章。一、淘宝商品API接口介绍淘宝开放了API接口,允许开发者获取淘......
      • Win32 API从磁盘文件图片创建工具栏图标
        关键字:Win32API从磁盘,文件,图片创建工具栏图标,包含提示文字。编译命令:g++demo01.cpp-mwindows-lcomctl32-ldwmapi-odemo01-static-Wall-std=c++11#defineUNICODE#include<Windows.h>#include<strsafe.h>#include<commctrl.h>/******CALLBACK代表__stdcall......
      • BAPI_ACC_DOCUMENT_POST 解决多行一次性供应商凭证导入问题
         POST函数将一次性供应商的信息放在抬头入参上,业务需要多个一次性供应商一起做凭证时,就满足不了。抬头入参会把所有行的一次性给一样的名称。想起之前做的 IF_EX_ACC_DOCUMENT~CHANGE,于是尝试了一下,发现可以解决IF_EX_ACC_DOCUMENT~CHANGE  "add by itl_csw 28.04.......
      • kubernetes api访问权限控制体验之一
        1.简介目前想实现通过python脚本,实时获取k8s的service信息,然后写成nginx.conf脚本,并且也让chatgpt写了代码。运行的时候提示401权限不够:root@gateway-7576bf68bb-cf55t:/usr/local/openresty#python3gen_nginx_conf.pyTraceback(mostrecentcalllast):File"g......
      • Unity中Android API 28之后无法HTTP请求
        本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复log,获取最新版运行时查看日志的工具。小新:“最近我升级到AndroidAPILevel28之后,发现发布的安卓包,网络请求都不通了,这是咋回事啊?”大智:“遇到这种问题,调试的时候首先去看日志,你研究运行日......
      • Java获取1688商品详情API接口示例说明
        ​ 在使用JavaWeb类的时候,如果我们需要获取一个网站中某个商品的详细信息,我们可以使用JavaScript来获取。我们可以用JavaScript来实现一个获取商品详情的API接口,来获取一个网站中某个商品的详细信息。在使用JavaScript进行接口请求时,可以使用下面的方法:通过javascript获......