Android中dumpsys命令用法简单介绍

在Android手机上, 通过使用adb shell命令可以进入android系统的shell, 该shell除支持一些常用的标准命令之外,还支持一些和android系统相关的其他命令, 这些命令可以打印出系统当前的状态信息。 dumpsys就是这样一个命令。

使用 adb shell 进入命令行, 敲入dumpsys, 打印出的信息超级多, 在我的nexus 5机器上,输出多达67000行。 首先从打印信息的开始部分看起:

Currently running services:
 SurfaceFlinger
 accessibility
 account
 activity
 alarm
 android.security.keystore
 appops
 appwidget
 assetatlas
 audio
 backup
 battery
 batterypropreg
 batterystats
 bluetooth_manager
 clipboard
 commontime_management
 connectivity
 consumer_ir
 content
 country_detector
 cpuinfo
 dbinfo
 device_policy
 devicestoragemonitor
 diskstats
 display
 display.qservice
 dreams
 drm.drmManager
 dropbox
 entropy
 gfxinfo
 hardware
 input
 input_method
 iphonesubinfo
 isms
 location
 lock_settings
 media.audio_flinger
 media.audio_policy
 media.camera
 media.player
 media_router
 meminfo
 mount
 netpolicy
 netstats
 network_management
 nfc
 notification
 package
 permission
 phone
 power
 print
 procstats
 samplingprofiler
 scheduling_policy
 search
 sensorservice
 serial
 servicediscovery
 simphonebook
 sip
 statusbar
 telephony.registry
 textservices
 uimode
 updatelock
 usagestats
 usb
 user
 vibrator
 wallpaper
 wifi
 wifip2p
 window

由此可知,该命令打印出的是系统当前的所有正在运行的服务的信息。从中可以看到我们常见的一些服务。 activity表示的是ActivityManagerService,用于管理应用程序的四大组件, appops表示的是AppOpsManagerService, 用于管理和配置权限。window表示的是WindowManagerService, 用于管理系统中的窗口, account表示的是AccountManagerService,用于管理系统中的账户信息。

在输出信息中, 紧接着的是每个服务当前的详细状态信息,每个服务的状态信息一般都比较多, 下面列举一个信息较少的服务信息:

-------------------------------------------------------------------------------
DUMP OF SERVICE accessibility:
ACCESSIBILITY MANAGER (dumpsys accessibility) 

User state[attributes:{id=0, currentUser=true, accessibilityEnabled=false, touchExplorationEnabled=false, displayMagnificationEnabled=false}
  services:{}] 

-------------------------------------------------------------------------------

每个服务信息之间使用横线间隔。

在开发过程中, 使用dumpsys的最常用的用途是查看ActivityManagerService服务的信息。 下面重点分析ActivityManagerService。 该服务的信息从下面一行开始:

-------------------------------------------------------------------------------
DUMP OF SERVICE activity:

我们知道android应用程序的四大组件中有三个是由intent来驱动的。所以在ActivityManagerService的信息中,专门有一部分来记录当前待处理的Intent, 称为pending intent 。格式如下:

ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)
 * PendingIntentRecord{65ced5f0 com.baidu.BaiduMap broadcastIntent}
 uid=10084 packageName=com.baidu.BaiduMap type=broadcastIntent flags=0x0
 requestIntent=act=com.baidu.locTest.LocationServer4.1.8
 sent=true canceled=false
 * PendingIntentRecord{66412b40 com.android.phone broadcastIntent}
 uid=1001 packageName=com.android.phone type=broadcastIntent flags=0x0
 requestIntent=act=com.android.phone.ACTION_CALL_BACK_FROM_NOTIFICATION dat=tel:153%201571%209213 cmp=com.android.phone/.PhoneGlobals$NotificationBroadcastReceiver

直接在shell中键入dumpsys activity intents, 会直接得到这些信息。 每个待处理的intent在ActivityManagerService内部使用一个PendingIntentRecord对象表示, 并且会显示出所在应用的包名, 并且会指定该intent是用来发送广播, 启动activity或是启动service。

下面的信息是系统中的broadcast receiver的状态信息, 从下面一行开始:

-------------------------------------------------------------------------------
ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts) 

直接在shell中键入umpsys activity broadcasts, 会直接得到这部分信息。

首先会列出系统中所有注册的广播接收者, 格式如下:

Registered Receivers:
 * ReceiverList{660f2e40 857 com.android.systemui/10012/u-1 remote:660f2ca0}
 app=857:com.android.systemui/u0a12 pid=857 uid=10012 user=-1
 Filter #0: BroadcastFilter{660f2ea0}
 Action: "android.intent.action.SHOW_BRIGHTNESS_DIALOG"
 * ReceiverList{66045cf0 3867 com.meitu.meiyancamera:pushservice/10091/u0 remote:65e756c8}
 app=3867:com.meitu.meiyancamera:pushservice/u0a91 pid=3867 uid=10091 user=0
 Filter #0: BroadcastFilter{66045d50}
 Action: "android.net.conn.CONNECTIVITY_CHANGE"

之后列出的是位于前台的历史广播, 格式如下:

Historical broadcasts [foreground]:
 Historical Broadcast foreground #0:
 BroadcastRecord{65610478 u-1 android.intent.action.TIME_TICK} to user -1
 Intent { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) }
 extras: Bundle[{android.intent.extra.ALARM_COUNT=1}]
 caller=android null pid=-1 uid=1000
 dispatchClockTime=Tue Oct 07 10:53:00 GMT+08:00 2014
 dispatchTime=-14s534ms finishTime=-14s436ms
 resultTo=null resultCode=0 resultData=null
 resultAbort=false ordered=true sticky=false initialSticky=false
 nextReceiver=10 receiver=null
 Receiver #0: BroadcastFilter{6568af00 u0 ReceiverList{65692db8 748 system/1000/u0 local:65b2a730}}
 Receiver #1: BroadcastFilter{660c8768 u0 ReceiverList{660c81a8 857 com.android.systemui/10012/u0 remote:660c78c0}}
 Receiver #2: BroadcastFilter{65d2d230 u0 ReceiverList{65d2cb20 857 com.android.systemui/10012/u0 remote:65a8bb70}}
 Receiver #3: BroadcastFilter{65f042e8 u0 ReceiverList{65f04d90 857 com.android.systemui/10012/u0 remote:65f9f2c0}}
 Receiver #4: BroadcastFilter{65a9d5f0 u0 ReceiverList{65affbc8 857 com.android.systemui/10012/u0 remote:65b41d50}}
 Receiver #5: BroadcastFilter{6682be08 u0 ReceiverList{6682bda8 857 com.android.systemui/10012/u0 remote:665c2478}}
 Receiver #6: BroadcastFilter{667a6c48 u0 ReceiverList{6671f128 857 com.android.systemui/10012/u0 remote:662c4048}}
 Receiver #7: BroadcastFilter{66901318 u0 ReceiverList{66949870 11260 com.youku.phone:MMS/10080/u0 remote:6695e528}}
 Receiver #8: BroadcastFilter{663a4b60 u0 ReceiverList{663a5148 857 com.android.systemui/10012/u0 remote:663c3530}}
 Receiver #9: BroadcastFilter{6633df98 u0 ReceiverList{6633f628 857 com.android.systemui/10012/u0 remote:66370860}} 

然后是位于后台的历史广播,格式如下:

Historical broadcasts [background]:
Historical Broadcast background #0:
 BroadcastRecord{66430db0 u0 cn.etouch.ecalendar_CN.ETOUCH.ECALENDAR.WEATHER_HAS_UPDATE} to user 0
 Intent { act=cn.etouch.ecalendar_CN.ETOUCH.ECALENDAR.WEATHER_HAS_UPDATE flg=0x10 (has extras) }
 extras: Bundle[mParcelledData.dataSize=44]
 caller=cn.etouch.ecalendar 3036:cn.etouch.ecalendar:remote/u0a140 pid=3036 uid=10140
 dispatchClockTime=Tue Oct 07 10:53:00 GMT+08:00 2014
 dispatchTime=-14s475ms finishTime=-14s400ms
 resultTo=null resultCode=0 resultData=null
 nextReceiver=5 receiver=null
 Receiver #0: ResolveInfo{66335e40 cn.etouch.ecalendar/.widget.myWidget_weather p=1000 m=0x108000}
 priority=1000 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
 ActivityInfo:
 name=cn.etouch.ecalendar.widget.myWidget_weather
 packageName=cn.etouch.ecalendar
 labelRes=0x7f06016c nonLocalizedLabel=null icon=0x0
 enabled=true exported=true processName=cn.etouch.ecalendar
 taskAffinity=cn.etouch.ecalendar targetActivity=null
 ApplicationInfo:
 packageName=cn.etouch.ecalendar
 labelRes=0x7f060042 nonLocalizedLabel=null icon=0x7f0200c5
 className=cn.etouch.ecalendar.common.ApplicationManager
 processName=cn.etouch.ecalendar
 taskAffinity=cn.etouch.ecalendar
 uid=10140 flags=0x88be44 theme=0x7f0a0029
 requiresSmallestWidthDp=0 compatibleWidthLimitDp=0 largestWidthLimitDp=0
 sourceDir=/data/app/cn.etouch.ecalendar-1.apk
 seinfo=default
 dataDir=/data/data/cn.etouch.ecalendar
 enabled=true targetSdkVersion=11
 supportsRtl=false

下面是provider相关的信息, 格式如下:

-------------------------------------------------------------------------------
ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)
 Published single-user content providers (by class):
 * ContentProviderRecord{65cd5f60 u0 com.redbend.vdmc/com.redbend.others.NodeProvider}
 package=com.redbend.vdmc process=com.redbend.vdmc
 proc=ProcessRecord{65d540d8 1018:com.redbend.vdmc/1001}
 uid=1001 provider=android.content.ContentProviderProxy@658b6690
 singleton=true
 authority=com.lge.node
 * ContentProviderRecord{65d1b150 u0 com.android.phone/.IccProvider}
 package=com.android.phone process=com.android.phone
 proc=ProcessRecord{65fe2488 1000:com.android.phone/1001}
 uid=1001 provider=android.content.ContentProviderProxy@660cbf38
 singleton=true
 authority=icc
 isSyncable=false multiprocess=true initOrder=0

直接在命令行键入dumpsys activity providers,可以直接得到provider相关的信息。由输出信息可知, 在AtivityManagerService中,一个provider组件使用一个ContentProviderRecord对象表示。

服务(Service)相关的信息如下:

-------------------------------------------------------------------------------
ACTIVITY MANAGER SERVICES (dumpsys activity services)
 User 0 active services:
 * ServiceRecord{660da0f0 u0 com.android.bluetooth/.hid.HidService}
 intent={act=android.bluetooth.IBluetoothInputDevice cmp=com.android.bluetooth/.hid.HidService}
 packageName=com.android.bluetooth
 processName=com.android.bluetooth
 baseDir=/system/app/Bluetooth.apk
 dataDir=/data/data/com.android.bluetooth
 app=null
 createTime=-1d16h27m16s523ms startingBgTimeout=--
 lastActivity=-17h20m54s385ms restartTime=-- createdFromFg=false
 Bindings:
 * IntentBindRecord{660da3e0}:
 intent={act=android.bluetooth.IBluetoothInputDevice cmp=com.android.bluetooth/.hid.HidService}
 binder=null
 requested=false received=false hasBound=false doRebind=false

在shell中直接键入dumpsys activity services命令, 可以直接得到Service信息。

Activity相关的信息格式如下:

-------------------------------------------------------------------------------
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
 Stack #0:
 Task id #1
 * TaskRecord{65cc6860 #1 A=com.google.android.googlequicksearchbox U=0 sz=1}
 numActivities=1 rootWasReset=true userId=0 mTaskType=1 numFullscreen=1 mOnTopOfHome=true
 affinity=com.google.android.googlequicksearchbox
 intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10600000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL}
 realActivity=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL
 Activities=[ActivityRecord{66020ee8 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL t1}]
 askedCompatMode=false
 lastThumbnail=android.graphics.Bitmap@6653bf90 lastDescription=null
 lastActiveTime=144235207 (inactive for 1424s)
 * Hist #0: ActivityRecord{66020ee8 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL t1}
  packageName=com.google.android.googlequicksearchbox processName=com.google.android.googlequicksearchbox
  launchedFromUid=0 launchedFromPackage=null userId=0
  app=ProcessRecord{66105ac8 1058:com.google.android.googlequicksearchbox/u0a19}
  Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL }
  frontOfTask=true task=TaskRecord{65cc6860 #1 A=com.google.android.googlequicksearchbox U=0 sz=1}
  taskAffinity=com.google.android.googlequicksearchbox
  realActivity=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL
  baseDir=/system/priv-app/Velvet.apk
  dataDir=/data/user/0/com.google.android.googlequicksearchbox
  stateNotNeeded=true componentSpecified=false mActivityType=1
  compat={480dpi} labelRes=0x7f0a04c5 icon=0x7f030002 theme=0x7f0e000d
  config={1.0 460mcc1mnc zh_CN ldltr sw360dp w360dp h567dp 480dpi nrml port finger -keyb/v/h -nav/h s.11}
  launchFailed=false launchCount=0 lastLaunchTime=-17h20m56s529ms
  haveState=true icicle=Bundle[mParcelledData.dataSize=12720]
  state=STOPPED stopped=true delayedResume=false finishing=false
  keysPaused=false inHistory=true visible=false sleeping=true idle=true
  fullscreen=true noDisplay=false immersive=false launchMode=2
  frozenBeforeDestroy=false thumbnailNeeded=false forceNewConfig=false
  mActivityType=HOME_ACTIVITY_TYPE
  thumbHolder: 65cc6860 bm=android.graphics.Bitmap@6653bf90 desc=null
  waitingVisible=false nowVisible=false lastVisibleTime=-21m53s598ms
 Task id #24
 * TaskRecord{667de460 #24 A=com.android.systemui U=0 sz=1}
 numActivities=1 rootWasReset=false userId=0 mTaskType=2 numFullscreen=1 mOnTopOfHome=true
 affinity=com.android.systemui
 intent={act=com.android.systemui.recent.action.TOGGLE_RECENTS flg=0x10c00000 cmp=com.android.systemui/.recent.RecentsActivity}
 realActivity=com.android.systemui/.recent.RecentsActivity
 Activities=[ActivityRecord{6561e970 u0 com.android.systemui/.recent.RecentsActivity t24}]
 askedCompatMode=false
 lastThumbnail=android.graphics.Bitmap@662b3118 lastDescription=null
 lastActiveTime=87755110 (inactive for 57904s)
 * Hist #0: ActivityRecord{6561e970 u0 com.android.systemui/.recent.RecentsActivity t24}
  packageName=com.android.systemui processName=com.android.systemui
  launchedFromUid=10012 launchedFromPackage=com.android.systemui userId=0
  app=ProcessRecord{6602d698 857:com.android.systemui/u0a12}
  Intent { act=com.android.systemui.recent.action.TOGGLE_RECENTS flg=0x10800000 cmp=com.android.systemui/.recent.RecentsActivity }
  frontOfTask=true task=TaskRecord{667de460 #24 A=com.android.systemui U=0 sz=1}
  taskAffinity=com.android.systemui
  realActivity=com.android.systemui/.recent.RecentsActivity
  baseDir=/system/priv-app/SystemUI.apk
  dataDir=/data/data/com.android.systemui
  stateNotNeeded=false componentSpecified=true mActivityType=2
  compat={480dpi} labelRes=0x7f0a0080 icon=0x10804a5 theme=0x7f0e0000
  config={1.0 460mcc1mnc zh_CN ldltr sw360dp w360dp h567dp 480dpi nrml port finger -keyb/v/h -nav/h s.9}
  launchFailed=false launchCount=0 lastLaunchTime=-9h59m21s658ms
  haveState=true icicle=Bundle[mParcelledData.dataSize=44]
  state=STOPPED stopped=true delayedResume=false finishing=false
  keysPaused=false inHistory=true visible=false sleeping=true idle=true
  fullscreen=true noDisplay=false immersive=false launchMode=3
  frozenBeforeDestroy=false thumbnailNeeded=false forceNewConfig=false
  mActivityType=RECENTS_ACTIVITY_TYPE
  thumbHolder: 667de460 bm=android.graphics.Bitmap@662b3118 desc=null
  waitingVisible=false nowVisible=false lastVisibleTime=-7h8m31s600ms 

 Running activities (most recent first):
 TaskRecord{65cc6860 #1 A=com.google.android.googlequicksearchbox U=0 sz=1}
 Run #1: ActivityRecord{66020ee8 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL t1}
 TaskRecord{667de460 #24 A=com.android.systemui U=0 sz=1}
 Run #0: ActivityRecord{6561e970 u0 com.android.systemui/.recent.RecentsActivity t24} 

 mLastPausedActivity: ActivityRecord{66020ee8 u0 com.google.android.googlequicksearchbox/com.google.android.launcher.GEL t1}

在shell中直接键入dumpsys activity activities, 可以直接得到activity的相关信息。

和其他组件相比, Activity的管理比较特殊。 Activity是以栈的形式管理的, 每个栈中存在若干个任务(task), 每个任务又由若干个Activity组成。

上面简单介绍了ActivityManagerService中的四大组件相关的信息。 关于其他服务中的信息, 由于信息量太大, 无法一一介绍, 请读者自行查看。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android ADB常用命令总结

    ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机). 它的主要功能有: 运行设备的shell(命令行) 管理模拟器或设备的端口映射 计算机和设备之间上传/下载文件 将本地apk软件安装至模拟器或android设备 ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备.先说安装方法,电脑上需要安装客户端.客户端包含在SDK里.设备上不

  • Android中执行java命令的方法及java代码执行并解析shell命令

    android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析. android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了呢. 答案是否定的.我们可以通过app_process来执行java程序. 写一个hello world吧,就是刚开始学java的时候 写得那个hello world,这次要在android上运行. 用记事本新建

  • Android Studio使用教程(五):Gradle命令详解和导入第三方包

    Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看.编译并导入第三方开源项目的方法. Sublime + Terminal编译并查看源码 首先来给大家介绍一种简便并且个人最喜欢的一种办法.很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim,sublime等,vim不是很熟练,所以个人一种都习惯用sublime来查看

  • android压力测试命令monkey详解

    一.Monkey 是什么?Monkey 就是SDK中附带的一个工具. 二.Monkey 测试的目的?:该工具用于进行压力测试. 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题. 三.Monkey 测试的特点?Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性. 四.Monkey 命令详解 1).标准的monkey 命令[adb shell] monkey [options] <eventcount> , 例如:adb shell monkey -

  • Android常用命令集锦(图文并茂适应于初学者)

    大家好,今天我们要讲的是android开发中,比较常用的名令集锦, 在我们开发中难免用到Android命令,有些确实命令确实很有用处. 特别对于一些初学者来说,命令根本没有想过用也不会用,比如他们想安装一个.apk文件到模拟器上面,但是他们不会启动模拟器,他们只会先启动Eclipse,然后在启动模拟器,这样不但浪费时间,而且Eclipse又占用你的内存.这也是我为什么总结这篇文章的原因了,希望对大家有所帮助. 如果想让系统认识你输入的命令(如:输入android命令)有两种方法:1.设置环境变量

  • logcat命令使用方法和查看android系统日志缓冲区内容的方法

    *注:可以用 adb logcat > 路径/文件名 来保存,此命令执行之时起的全部日志信息到一个文件里,ctrl + C 结束日志输出:后面不加 > 路径/文件名 的话,则在 stdout (终端窗口)中输出!例如:$ adb logcat -v long Checkin *:S > ~/桌面/log.txt 一.在 Java 与 C 语言中输出日志:1) Java 代码在程序中输出日志, 使用 android.util.Log 类的以下 5 个方法:   Log.v().Log.d(

  • Android中删除文件以及文件夹的命令记录

    记录一下命令: tools>adb remount tools>adb shell #su #cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹

  • 一些比较实用的 Android adb 命令分享

    下面是一些我找到Android的ADB有用的命令.可以手动或使用自动构建和测试过程. 查看设备 复制代码 代码如下: adb devices 如果多个设备连接则使用 use adb -s DEVICE_ID连接到目标设备 安装应用 使用install命令安装一个apk包,如果应用已安装到了该设备,则使用-r重新安装和保持原来的应用数据 复制代码 代码如下: adb install -r APK_FILE #example adb install -r com.feiliu.wjbd 卸载一个应用

  • Android中实现用命令行同步网络时间

    一.简介 Android基于Linux平台的开源手机操作系统. 二.原理 既然是Linux,那就应该支持linux的各种命令行,高度的可配置,但实验发现Android是Google的一个高度阉割版的linux,很多命令都不支持,如rdate命令(网络同步时间命令).既然不支持,那我使他支持不就完了. 三.BusyBox BusyBox 是标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 grep.f

  • Android中dumpsys命令用法简单介绍

    在Android手机上, 通过使用adb shell命令可以进入android系统的shell, 该shell除支持一些常用的标准命令之外,还支持一些和android系统相关的其他命令, 这些命令可以打印出系统当前的状态信息. dumpsys就是这样一个命令. 使用 adb shell 进入命令行, 敲入dumpsys, 打印出的信息超级多, 在我的nexus 5机器上,输出多达67000行. 首先从打印信息的开始部分看起: Currently running services: Surface

  • jQuery中 bind的用法简单介绍

    bind介绍 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 语法 $(selector).bind(event,data,function) event 必须.添加到元素的一个或多个事件如:click,mouseover,mouseup,change,select data 可不填.传递到函数的额外数据,如:$(selector).bind("click","input",function(){}); function(){}

  • javascript中的location用法简单介绍

    先前写了一片用window.location.href实现刷新另个框架页面 ,特此我看了一下locaiton的详细用法,对此有点改进,现在我将他整理成js,方便查阅,也贴上和朋友们分享一下,具体如下: 第一.简单介绍一下location属性.用法以及相关示例: Location 包含了关于当前 URL 的信息. 描述 location 对象描述了与一个给定的 Window 对象关联的完整 URL.location 对象的每个属性都描述了 URL 的不同特性. 通常情况下,一个 URL 会有下面的

  • Android中ADB命令用法大结局

    前言 说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率. 查看版本 ADB 的安装这里就不多说了,输入以下命令有如下提示就证明你环境ok,否则自行网上搜索解决下. $ adb version Android Debug Bridge version 1.0.36 Revision 8f855a3d9b35-android ADB 的命令有很多,今天就来总结下我在开

  • Android中WebView的一些简单用法

    Android中WebView的一些简单用法 一直想写一个关于 WebView 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更新讲解一下,今天就先把项目出来做一些简单介绍,过多的内容可以看我的源码,都传到github上了. 下面是项目的效果图: 应用用到的是 MVP 设计模式,对这种模式还不太了解的可以先自行google一下,不然项目估计会看的晕,虽然我的代码都很简洁的. 对于MVP 可以带着一个思路看源码,那就是 activity(或其他组件)通过

  • Linux中fuser命令用法详解

    描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母表示访问类型. 在zkfc的日志里面,有一个warn:PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 8090 via ssh: bash: fuser: 未找到命令 原因是最小化安装centos的时候,没有fuser这个命令 yum install -y

  • android中adb命令最全总结

    目录 一.查看adb版本 二.查看已经连接的设备 三.获取手机序列号 四.查看手机设别型号 五.查看手机分辨率 六.获取手机的mac地址 七.查看日志 八.查看电池信息 九.查看进程 十.查看cpu使用情况 十一.安装apk 十二.卸载apk 十三.查看手机上所有安装的app包名 十四.获取某个应用包名的启动入口 十五.启动某个app 十六.屏幕截图 十七.录制视频 十八.上传文件到手机 十九.从手机端下载文件 二十.模拟屏幕点击事件 二十一.模拟手势滑动事件 二十二.模拟点按键盘按钮 二十三.

  • Android中persistent属性用法详解

    本文实例讲述了Android中persistent属性用法.分享给大家供大家参考,具体如下: 前段时间在研究telephony时,一直没有在framework下发现对telephony的初始化(PhoneFactory.Java中的makeDefaultPhones函数)的调用.结果全局搜索之后发现在application PhoneApp(packages/apps/Phone)中调用了.但是application PhoneApp既没有被Broadcast唤醒,也没有被其他service调用

  • Android 中LayoutInflater.inflate()方法的介绍

    Android 中LayoutInflater.inflate()方法的介绍 最近一直想弄明白LayoutInflater对象的inflate方法的用法,今天做了实例. <LinearLayout android:id="@+id/ll_item_Group" android:layout_width="match_parent" android:layout_height="200dp" android:background="

  • Android中AlarmManager基本用法分析

    本文实例讲述了Android中AlarmManager基本用法.分享给大家供大家参考,具体如下: AlarmManager的作用文档中的解释是:在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent. 对应AlarmManager更深层的了解可以参考: http://www.jb51.net/article/90491.htm android提供了四种类型的闹钟: ① ELAPSED_REALT

随机推荐