`

Android异常

阅读更多

Android异常

一、 

Unable to resume activity : android.database.StaleDataException: Attempted to access a cursor after it has been closed. 异常

 

解决方法:

一般用Cursor后, 就立即close()了,但是在用managedQuery的时候, 却不能主动调用close()方法, 否则在Android 4.0+的系统上, 会发生崩溃

google的文档是这么写的

Warning: Do not call close() on a cursor obtained using this method, because the activity will do that for you at the appropriate time. However, if you call stopManagingCursor(Cursor) on a cursor from a managed query, the system will not automatically close the cursor and, in that case, you must call close().

 

也有人说用下面的方法可以避免这个问题

这个问题其实很简单  估计大家在查询数据库的时候用的是这个函数 
viedoCursor = context.managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoColumns,null, null, null);
只要换成这样就可以了:
ContentResolver cr = context.getContentResolver();
viedoCursor = cr.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoColumns,null, null, null);

 

参与文档:

http://stackoverflow.com/questions/9696868/unable-to-resume-activity-error

 

二、

android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
在主线程中的网络异常

从android4.0以后不建议在主线程直接连接服务器,进行访问网络的操作,一般需要开一个子线程去访问网络,然后通过handler去更新界面!

解决方案有两个,一个是使用StrictMode,二是使用线程来操作网络请求 

第一种方法:简单暴力,强制使用,代码修改简单(但是非常不推荐)
在MainActivity文件的setContentView(R.layout.activity_main)下面加上如下代码

if (android.os.Build.VERSION.SDK_INT > 9) {
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
      StrictMode.setThreadPolicy(policy);
}

 

 第二种方法就是我使用的方法也是我要推荐的方法,将请求网络资源的代码使用Thread去操作。在Runnable中做HTTP请求,不用阻塞UI线程。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.main_view);
    new Thread(runnable).start();
}
 
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Bundle data = msg.getData();
        String val = data.getString("value");
        Log.i(TAG,"请求结果:" + val);
    }
}
 
Runnable runnable = new Runnable(){
    @Override
    public void run() {
        // TODO: http request.
        Message msg = new Message();
        Bundle data = new Bundle();
        data.putString("value","请求结果");
        msg.setData(data);
        handler.sendMessage(msg);
    }
}

 三、ddms files not found hprofconv.exe

打开eclipse发现有这个东西。。
DDMS files not found: D:\andriod\android-sdk-windows\platform-tools\hprof-conv.exe

解决方法:

hprof-conv.exe:将hprof文件转换成MAT识别的标准格式。将hprofconv.exe 直接复制到platform-tools文件夹中,下载见附件

四、 Android 更新ADT至22.6.0版本之后,创建出来的项目继承的是ActionBarActivity

昨天Eclipse更新了一下sdk和adt到22.6,更新一切都很顺利,很开心的样子,可以新建一个工程时发现多了一个appcompat_v7这个东西,一下子就把小编怔住了,后来才发现这是官方的一个兼容包,没什么大惊小怪的,做工程还是更平时一样,要怎么做才不会出现这个包呢?其实在新建项目的时候把minimum required sdk选择android 4.0以上版本就不会出现那个了。

五、dex多重定义

问题描述:

[2013-03-26 09:41:23 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/apache/http/entity/mime/FormBodyPart;
[2013-03-26 09:41:23 - FirstLog] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/apache/http/entity/mime/FormBodyPart;



 

这里有两个版本的jar包,删掉一个就哦了。

参考

 

更新SDK后错误处理:W/ResourceType(18775): No known package when getting value for resource number 0x7f050000

 

在升级ADT bundle,SDK之后,调试一个project时遇到以上问题,然后调试其他项目却没有出现该问题.

查看0x7f050000指向的就是app_name,检查strings.xml也没发现问题,而且升级之前没有发现这个问题的,在网上查找许久终于找到一个答案.见最后参考链接.

Android SDK Build-tools  21 and 21.0.1 存在问题.当assets目录下有zip或者jar文件时,生成的应用就会出现上述问题. 而在21.0.2版本没有这个问题.所以可以通过升级SDK Build-tools解决.
对于我的项目,我查看了assets目录,对于出问题的项目,里面有几个txt文件,并没有zip或jar文件,而不出问题的项目,assets目录是空的,看来只要assert目录有东西,都可能存在问题.
解决方法,既然21.0.2可以,那就通过SDK Manager,安装android SDK Build-tools 21.0.2以上的版本.实测,安装更新后,重启eclipse,调试项目,没有该问题出现了.
如果不想更新,也有版本,根据参考链接中的方法,指定Build-tools版本.
如指定使用20的Build-tools版本:
对于eclipse:
修改project.properties加入sdk.buildtools=20
对于 Android Studio:
则修改build.gradle在android的section中增加 buildToolsVersion "20"  

或者可使用附件提供的4.4W.rar(前提需要把E:\android4.0\android-sdk-windows\build-tools 目录下的文件清空)

参考链接:

https://stackoverflow.com/questions/26488685/eclipse-juno-adt-23-0-2-resourcesnotfoundexception?stw=2

  • 大小: 4.2 KB
分享到:
评论

相关推荐

    android 异常处理机制

    以下将详细介绍Android异常处理机制及其优化策略。 首先,Android系统在遇到未被捕获的异常时,会触发系统默认的错误报告,弹出“应用无响应”(ANR)对话框,这不仅对用户不友好,也无助于开发者定位问题。为了...

    android 异常捕捉和日志文件保存

    一、Android异常处理 1. **异常分类**:在Android中,异常主要分为两种类型——Checked Exception(已检查异常)和Unchecked Exception(未检查异常)。已检查异常在编译时必须被捕获或声明,如IOException;未检查...

    Android异常日志保存

    "Android异常日志保存"这个Demo提供了一个实用的方法,将应用程序运行时的错误日志保存到设备的外部存储(SD卡)上,以便于开发者进行测试和调试。下面我们将详细探讨这一技术。 1. **Android异常处理基础** 在...

    android 异常崩溃demo

    一、Android异常处理基础 在Android系统中,异常分为检查异常(Checked Exception)和运行时异常(Runtime Exception)。检查异常是可以在编译时期就能发现的,如IOException,需要显式捕获或声明抛出。运行时异常...

    Android异常捕获(发邮件+写文件)

    总结来说,Android异常捕获是提升应用稳定性和用户体验的关键步骤。通过自定义`UncaughtExceptionHandler`,我们可以收集并记录异常信息,甚至在发生异常时主动向开发者报告,以便及时修复问题。在实际开发中,还应...

    Android异常日志捕获

    总结来说,Android异常日志捕获是调试和优化应用的关键步骤。通过使用Log类、自定义异常处理器和高级日志管理策略,开发者可以更好地理解程序运行状态,及时发现并解决问题,提升应用的质量和用户体验。同时,注意...

    android异常捕获,存在sd卡中

    标题"android异常捕获,存在sd卡中"表明这是一个关于在Android系统中如何捕获并记录应用异常到SD卡上的技术实践。描述中的"app异常信息自动保存在sd卡中"进一步强调了这个机制主要是为了将异常日志存储在外部存储...

    CrashHandler android异常处理

    1. **Android异常处理基础** Android系统默认提供了异常处理机制,但通常只提供简单的堆栈跟踪信息,并不足以进行深入的问题排查。为了提供更全面的错误报告和更好的用户体验,开发者需要自定义异常处理器。 2. **...

    android 异常捕获源码.zip

    总之,"android 异常捕获源码.zip"中的ACRA项目提供了全面的Android异常处理解决方案,对于提高应用的质量和用户体验有着重要的价值。开发者不仅可以直接使用ACRA,也可以借鉴其设计思想,为自己的应用构建更加完善...

    android 异常10s后重启

    总的来说,解决“Android异常10秒后重启”的问题需要系统地排查,包括查看错误日志、分析崩溃报告、检查硬件状态、更新系统和应用,甚至可能需要专业人员的协助。记住,每次尝试解决方案后,都需要观察设备是否仍然...

    Android异常捕获demo(可以捕获ANR+UncaughtExceptionHandler)

    `Android异常捕获demo`主要展示了如何有效地捕获和处理两种重要的错误类型:应用程序无响应(ANR)和未捕获异常(UncaughtExceptionHandler)。下面我们将深入探讨这两个概念以及如何在实际应用中实现它们。 1. **...

    无法运行android异常捕获存在sd卡中.rar

    "无法运行android异常捕获存在sd卡中.rar"这个文件可能包含了开发者在调试过程中记录的一些错误日志或者异常堆栈信息,这些信息对于诊断和修复问题至关重要。 首先,我们要了解Android中的异常处理机制。在Java编程...

    基于FWKN-SVM的Android异常入侵检测的研究.pdf

    【Android异常入侵检测】 本文研究的是在Android平台上利用一种名为FWKN-SVM(特征加权K最近邻支持向量机)的方法进行异常入侵检测。在移动设备的安全领域,尤其是Android系统,异常入侵检测是保障用户数据安全的...

    Android异常处理最佳实践

    本文将深入探讨"Android异常处理最佳实践",并基于提供的代码示例进行解析。 首先,一个优秀的异常处理机制应具备以下特点: 1. 错误信息上传:为了便于开发者追踪和修复问题,异常处理机制应能捕获错误信息,并将...

    Android异常捕获

    本篇将详细介绍Android异常捕获的原理、实现方法以及如何将错误日志保存到T卡。 首先,Android系统提供了Java语言的异常处理机制,包括try-catch-finally语句块。当try块中的代码出现异常时,会立即跳转到对应的...

    android异常类型和处理

    在Android开发中,异常处理是确保程序稳定性和健壮性的重要环节。Java语言提供了一套完善的异常处理机制,使得开发者能够有效地捕获和处理程序运行过程中可能出现的各种问题。本文将详细探讨Android中常见的异常类型...

    UncaughtException不让Android应用异常退出

    "UncaughtException不让Android应用异常退出"这个主题,就是关于如何处理程序中的未捕获异常,以防止应用突然崩溃,从而提升用户体验。在这个问题上,我们可以从以下几个方面来探讨: 1. **...

    Android-Android异常捕获以及上传到服务器

    在Android应用开发中,异常处理是一项至关重要的任务,它确保了程序在遇到错误时能够以优雅的方式退出,而不是崩溃,从而提高用户体验。本教程将详细讲解如何在Android中实现异常捕获并将其上传到服务器。 首先,...

Global site tag (gtag.js) - Google Analytics