美文网首页Android开发Android知识
Android开发常见异常与错误系列(一)

Android开发常见异常与错误系列(一)

作者: sunnylyg | 来源:发表于2016-04-09 14:51 被阅读1150次

    原文转载至:http://blog.csdn.net/u011153817/article/details/51098630

    一、前言

    这系列文章是自己在平时开发过程中遇到的问题。之前只是记在云笔记上面,现在整理一下,发出来共享。

    ps:像那些什么没有注册Activity呀,权限呀等最基本的就不再赘述。

    二、ADB连接异常

    有时我们发现,即使自己从任务管理器里面把adb.exe给干掉了,但还是不行,这时,你就可以尝试以下操作:

    [2014-07-30 17:09:11 - QtActivity] The connection to adb is down, and a severe error has occured.

    [2014-07-30 17:09:11 - QtActivity] You must restart adb and Eclipse.

    [2014-07-30 17:09:11 - QtActivity] Please ensure that adb is correctly located at ‘D:\InstallFile\AndroidDevelop\ADT\sdk\platform-tools\adb.exe’ and can be executed.

    adb起动失败:

    1,杀掉其它的adb.exe看,如果不行,

    2,看sdk\tools路径下面有没有

    hprof-conv.exe

    如果有,则把它复制到sdk\platform_tools下

    3,如果没有,刚看sdk\platform_tools下有没有

    hprof-conv.exe

    如果有,刚复制到tools下。

    4,如果两者都没有,刚下一个

    hprof-conv.exe

    三、java.lang.IllegalStateException: Activity has been destroyed

    这个异常在切换Fragment中比较容易出现,稍不注意就会出现如下异常:

    FATAL EXCEPTION: main12-0909:20:14.689: E/AndroidRuntime(31223): java.lang.IllegalStateException: Activity has been destroyed12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)12-0909:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.init(DongTaiFragment.java:209)12-0909:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.onCreateView(DongTaiFragment.java:68)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)12-0909:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.handleCallback(Handler.java:605)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.dispatchMessage(Handler.java:92)12-0909:20:14.689: E/AndroidRuntime(31223): at android.os.Looper.loop(Looper.java:154)12-0909:20:14.689: E/AndroidRuntime(31223): at android.app.ActivityThread.main(ActivityThread.java:4624)12-0909:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invokeNative(Native Method)12-0909:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invoke(Method.java:511)12-0909:20:14.689: E/AndroidRuntime(31223): atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)12-0909:20:14.689: E/AndroidRuntime(31223): atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)12-0909:20:14.689: E/AndroidRuntime(31223): at dalvik.system.NativeStart.main(Native Method)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    经查,说这个是当前android-support-v4版本的一个bug,因为在当fragment进行到detached状态时,它会重置它的内部状态。

    然而,它并没有重置mChildFragmentManager.这导致在Fragment重新attach时,它(fragment)没有重新attachm childFragmentManager,从而引发了上面的异常.

    解决方案:

    在每个调用getChildFragmentManager()的fragment中复写onDetach()方法:

    @OverridepublicvoidonDetach() {super.onDetach();try{Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");childFragmentManager.setAccessible(true);childFragmentManager.set(this,null);}catch(NoSuchFieldException e) {thrownewRuntimeException(e);}catch(IllegalAccessException e) {thrownewRuntimeException(e);}}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    四、java.lang.IllegalArgumentException: Illegal character in query at index

    这个异常,在我们拼接请求参数时,可能会碰到,原因是里面的特殊字符转换异常。解决办法如下:

    url转换问题

    String url = baseUrl + “?” + “name=” + name + “&age=” + age;

    url = url.replaceAll(“&”, “%26”);

    url = url.replaceAll(” “, “%20”);

    解释如下:

    特殊符号替换符号

    ?%3F

    &%26

    |%124

    =%3D

    #%23

    /%2F

    +%2B

    %%25

    空格%20

    五、eclipse连接小米2S调试程序的问题

    虽然快2年没用过eclipse了,但这个问题还是贴出来,也许正好有正在用eclipse的同学遇到了此问题:

    小米Mi2S连接到eclipse上无法识别。即使开启了调试模式,也无法识别.终于找到了一个可用的方法。

    方法

    用数据线连接手机和电脑。

    打开手机拨号界面。

    在拨号界面按##717717##自动就开启了。

    在通知栏会出现一个 Diag USB port enable。

    当然,应该是需要ROOT权限的。

    这时候你的PC机会弹出安装设备驱动。

    如果不成功,多插拔几次试试。

    ok!安装完就搞定了!这时候打开eclipse就会在Driver里面看到你的手机了。

    注意事项

    在PC机上安装新硬件向导时候可能会遭遇到缺少dll文件,比如我就遇到缺少了WinUSBCoInstaller2.dll,这个问题。这时候就要去网上找找喽。这个东西分x64 和 x86的,注意不要搞错了!

    如果先打开eclipse,再安装的话,可能导致eclipse挂掉,不明原因,可能是我机器配置不行。两次均有这种状况。所以建议先安装后再开eclipse。

    相关文章

      网友评论

        本文标题: Android开发常见异常与错误系列(一)

        本文链接:https://www.haomeiwen.com/subject/gtcblttx.html