Android浏览器的研究(六)---ADT调试通过Intent启动的Activity
今天遇到一个问题,在音乐应用里长按一个歌曲,在弹出菜单中选择搜索,在搜索选择框中选择浏览器。正常情况下应该打开浏览器并且使用默认的搜索引擎启动搜索,但是现在浏览器搜索界面并没有打开。首先想到的是打开浏览器工程,在相关位置设置断点,启动调试,发现一切处理正常,浏览器界面打开并正常启动了搜索过程。原来问题只发生在浏览器进程尚未启动,音乐应用使用Intent启动浏览器来进行搜索的情况下。这里分享一下这种情况下如何启动调试分析。
专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业东源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
首先,该应用是其他应用通过Intent启动的,而我们需要调试它。在C/C++的程序调试的时候,遇到这种情况我们一般将调试器是attach到给定的进程号上实现调试的,实际上ADT也是支持这种场景的:打开浏览器APK工程,打开DDMSPerspective, 如果当前浏览器已经运行,在Devices视图里点击你的应用,这个时候Devices视图里的绿色的小虫子按钮就会变成Active 状态,点击它就可以Attach 到该进程进行调试,如图:
其次,你的应用可能在启动后很快结束,你还没来得及Attach到它(在attach到它之前你的断点不起作用)。你需要你的应用等你一下,让你来得及attach到它。最简单的办法就是在你的断点前Sleep一下,或者使用其它合适的同步方案(传统应用里我们通常是通过读一个键盘输入来同步)。
本文题目:Android浏览器的研究(六)---ADT调试通过Intent启动的Activity
网站链接:http://cdiso.cn/article/ghjjds.html