Android之——常见Bug及其解决方式
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46942139
1.android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
解决方式:将getApplication改成xxxx.this
2.call you are unregister onbrocastRevicer?
解决方式:忘记注销广播
3.Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE表示某个应用没有卸载完毕
4.出现launch Activtiy not found ?
由于这个Activity没有写main 和luncher參数
5.R.java was removed! Recreating R.java!
6.com.process.acore 表示的是这个应用程序有电话拨号进程
7.android.database.CursorIndexOutOfBoundsException解决方式:原因是应该先调用cursor.moveToFirst();。
数据库查询得到的cursor里面仅仅有1个结果,你却查找第-1个,肯定不正确
8.launcher.apk启动程序在启动动画页面卡住,原因是开机动画非常暂用cpu,假设luancher里面的某部分代码堵塞了。或者某个自己定义view中部分代码太占用CPU导致的。
9.java.lang.IllegalStateException: The specified child al
ready has a parent. You must call removeView() on the child's parent first,表示是缺少对象,
解决方法:查找对象是否还在,要么就是多次事例化了
10.java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131230732, class
android.widget.ListView) with Adapter(class com.cardroid.sdhc.medialist.SDMediaListAdapter)]
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.widget.ListView.layoutChildren(ListView.java:1492)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.widget.AbsListView.onTouchEvent(AbsListView.java:2124)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.widget.ListView.onTouchEvent(ListView.java:3315)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.view.View.dispatchTouchEvent(View.java:3918)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:898)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:937)
01-01 00:51:06.320: ERROR/AndroidRuntime(4035): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:937)
解决方式:放入主线程中执行,由于此时这个LISTVIEW 载入ADAPTER是放入AsyTask里面执行的
11.Database( 2284): sqlite returned: error code = 14, msg = prepared
> statement aborts at 4: [DELETE FROM android_metadata]
> Database( 2284): DELETE failed setting locale
> Database( 2284): Failed to setLocale() when constructing, closing the
> database
> Database( 2284): android.database.sqlite.SQLiteException: unable to open
> database file
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
> Database( 2284): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
> Database( 2284): at
> android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:542)
> Database( 2284): at
> android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
> Database( 2284): at
> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
> Database( 2284): at
> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
> Database( 2284): at
> com.android.providers.media.MediaProvider.query(MediaProvider.java:1287)
> Database( 2284): at
> com.android.providers.media.MediaProvider.attachVolume(MediaProvider.java:3045)
> Database( 2284): at
> com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1945)
> Database( 2284): at
> com.android.providers.media.MediaProvider.insert(MediaProvider.java:1665)
> Database( 2284): at android.content.ContentProvider
> $Transport.insert(ContentProvider.java:174)
> Database( 2284): at
> android.content.ContentResolver.insert(ContentResolver.java:587)
> Database( 2284): at
> com.android.providers.media.MediaScannerService.openDatabase(MediaScannerService.java:65)
> Database( 2284): at
> com.android.providers.media.MediaScannerService.scan(MediaScannerService.java:113)
> Database( 2284): at
> com.android.providers.media.MediaScannerService.access
> $400(MediaScannerService.java:53)
> Database( 2284): at com.android.providers.media.MediaScannerService
> $ServiceHandler.handleMessage(MediaScannerService.java:283)
> Database( 2284): at
> android.os.Handler.dispatchMessage(Handler.java:99)
> Database( 2284): at android.os.Looper.loop(Looper.java:123)
> Database( 2284): at
> com.android.providers.media.MediaScannerService.run(MediaScannerService.java:197)
> Database( 2284): at java.lang.Thread.run(Thread.java:1096)
> SQLiteOpenHelper( 2284): Couldn't open external.db for writing (will try
> read-only):
> SQLiteOpenHelper( 2284): android.database.sqlite.SQLiteException: unable
> to open database file
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
> SQLiteOpenHelper( 2284): at
> android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:542)
> SQLiteOpenHelper( 2284): at
> android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
> SQLiteOpenHelper( 2284): at
> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaProvider.query(MediaProvider.java:1287)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaProvider.attachVolume(MediaProvider.java:3045)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1945)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaProvider.insert(MediaProvider.java:1665)
> SQLiteOpenHelper( 2284): at android.content.ContentProvider
> $Transport.insert(ContentProvider.java:174)
> SQLiteOpenHelper( 2284): at
> android.content.ContentResolver.insert(ContentResolver.java:587)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaScannerService.openDatabase(MediaScannerService.java:65)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaScannerService.scan(MediaScannerService.java:113)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaScannerService.access
> $400(MediaScannerService.java:53)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaScannerService
> $ServiceHandler.handleMessage(MediaScannerService.java:283)
> SQLiteOpenHelper( 2284): at
> android.os.Handler.dispatchMessage(Handler.java:99)
> SQLiteOpenHelper( 2284): at android.os.Looper.loop(Looper.java:123)
> SQLiteOpenHelper( 2284): at
> com.android.providers.media.MediaScannerService.run(MediaScannerService.java:197)
> SQLiteOpenHelper( 2284): at java.lang.Thread.run(Thread.java:1096)
解决方式:DBHELPER打开数据库的链接后,没有关闭,导致下次进入有问题,同一时候有的把数据库放入SDCARD。要加SDCARD的权限。
12.在LINUX以下出现R。
JAVA文件不生成的时候,是由于SDK以下的platforms/android-8/tools要加权限,为了方便经常使用
platforms/android-8/tools$ chmod a+x *
13: 问题描写叙述:E/WindowManager( 5523): android.view.WindowLeaked: Activity com.cardroid.sdhc.medialist.SDMediaListActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@30c45e38
that was originally added here
解决方式:即未能及时销毁某个PhoneWindow。
当前Activity被关闭。而在关闭的同一时候,却没能及时的调用dismiss来解除对ProgressDialog等的引用。从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息。须要在ONDESTORY方法时候关闭一些DIALOG。
14:问题描写叙述,在拨打电话的时候配置文件里已经加入了权限,可是提示还须要加入权限requires android.permission.CALL_PHONE
W/dalvikvm( 5709): threadid=1: thread exiting with uncaught exception (group=0x40015568)
W/ActivityManager( 201): Permission Denial: starting Intent {
act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com.android.phone/.OutgoingCall
Broadcaster } from ProcessRecord{408c2550 5709:com.um.mplus/10072} (pid=5709, uid=10072)
requires android.permission.CALL_PHONE
E/AndroidRuntime( 5709): FATAL EXCEPTION: main
E/AndroidRuntime( 5709): java.lang.SecurityException: Permission Denial: starting Intent {
act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com
.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{408c2550
5709:com.um.mplus/10072} (pid=5709, uid=10072) requires android.permission.CALL_PHONE
解决这个问题:由于这个权限,有的系统级别作了限制,所以。加入抓取异常就能够了。
1. 假设你的项目的R文件不见的话。能够试下改版本在保存,R文件不见一般都是布局文本出错导致.
2. 布局文件不能够有大写字母
3. 抛出例如以下错误WARNING: Application does not specify an API level requirement!,
是因为没有指定users sdk的缘故,改动AndroidManifest.xml文件.
增加:<uses-sdkandroid:minSdkVersion="8"></uses-sdk>
4. 机器内存的瓶颈,当apk大于我们的机器内存时,模拟器无情的抛出
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled!
让我们无法调试,如今我们来根治这个问题,解决方法有两种
第一种(仅限apk小于机器内存,而且已安装上当前apk,仅仅是无法再次debug)
启动模拟器。然后进入菜单
settings->applications->mange
applications-> select the application->select "unistall".
这样就能彻底删除了。然后再又一次安装这个apk就没问题了
另外一种(通用)
-partition-size 128
Eclipse中在项目Target的Options中加入。
5. 启动android模拟器时候假设提示:Failed to install on device ‘emulator-5554′: timeout
这是可能由于卡的原因导致启动超时,解决的方法:eclipse -> window -> Preferences -> Android -> DDMS -> ADB connection time out(ms).把这个时间设置的长一些,默认是5秒即5000ms, 我改成10秒就ok了。
这样就不用每次重新启动模拟器了。详细时间设置依据实际环境须要
6. 在开发的过程中常常在安装apk到模拟器上时会报出
ActivityManager: Error: Activity class {..} does not exist.
这种错误,这里总结两种解决方案:
在AndroidManifest.xml文件里查看主Activity的名字前是否有'.'符
7 执行Eclipse时出现了这个错误
No Launcher activity found!
The launch will only sync the application package on the device!
解决的方法
在AndroidManifest.xml 中加入
<category android:name="android.intent.category.LAUNCHER" />
8 出现例如以下错误,没有写入sd卡权限 java.io.FileNotFoundException: /mnt/sdcard/update.zip (Permission denied)
解决的方法,资源文件写入例如以下权限
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
温馨提示:本文中涉及到的典型Bug及其解决方式都是本人截止到眼下在实际项目中总结的。因为本人工作年限有限,以后在实际工作中可能会遇到其它一些Bug,本人会一如既往的总结工作中出现的问题和解决方式,所以。本文以后会持续更新。。。
Android之——常见Bug及其解决方式的更多相关文章
- Android后台服务拍照的解决方式
一.背景介绍 近期在项目中遇到一个需求.实现一个后台拍照的功能. 一開始在网上寻找解决方式.也尝试了非常多种实现方式,都没有惬意的方案.只是确定了难点:即拍照要先预览,然后再调用拍照方法.问题也随之而 ...
- Hadoop常见异常及其解决方式
1.Shell$ExitCodeException 现象:执行hadoop job时出现例如以下异常: 14/07/09 14:42:50 INFO mapreduce.Job: Task Id : ...
- Android Studio安装更新终极解决方式
之前写过一篇Android SDK无法更新的博文,其实该方式对Android Studio同样有效,大伙可以下载网盘中分享的小软件,若搜索到通道后提示需要更细,也可以选择更新.参考:http://bl ...
- Java常见的乱码解决方式
JAVA几种常见的编码格式(转) 简介 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码 ...
- 移动端bug之解决方式
1.Android中元素被点击时产生的边框: * { -webkit-tap-highlight-color: rgba(250,250,250,0); /*更改点击事件的焦点色*/} 2.去除移 ...
- Android虚拟机常见错误及解决办法
第一个: [2012-11-09 13:15:14 - Tesa] Android Launch! [2012-11-09 13:15:14 - Tesa] The connection to adb ...
- 关于Cocos2d-x 3.0正式版 粒子问题在IOS上正常显示,在Android下有问题的解决方式
前几个在Cocos2d-x论坛上,有人提到粒子系统的问题..这里列举一下解决的方法: 或许到时候大家用粒子效果的时候也会发现这个问题,如今把这个问题的解决办法说出来.至于原因我也不知道是引擎的问题还是 ...
- 升级后开机就提示“android.process.acore”停止执行 --分析 解决方式
OTA升级的,升级引发的全部问题都是能够解释的,有的能解决,有的不能解决. 一个项目报了这个问题. 升级后开机就提示"android.process.acore"停止执行 抓取 a ...
- MYSQL常见错误及其解决方式
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
随机推荐
- Rsync 传输不需要输入密码
1.背景 1) 一个作为服务器端:VM3(IP: 3.9.8.151) 2) 一个作为客户端:VM2(IP: 3.9.8.157) 3) 服务器端和客户端网络 ...
- (转)Arcgis for JS之Cluster聚类分析的实现
http://blog.csdn.net/gisshixisheng/article/details/40711075 在做项目的时候,碰见了这样一个问题:给地图上标注点对象,数据是从数据库来的,包含 ...
- CI框架3.x 之实现前后端分离
一.建立合理的目录结构 admin与home为后台和前台的控制器和模板文件夹 二.定义前后台视图路径常量 在constants.php中添加如下代码: //定义前台视图路径常量 define('HOM ...
- Linux cat 命令
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的:cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > ...
- 【Linq】
" }; var l1 = strs.ToLookup(a => "a"); //Key=a elements=1,3 var l2 = strs.ToLookup ...
- TCP/IP UDP 协议首部及数据进入协议栈封装的过程
数据的封装 UDP 封装 TCP 封装 IP 封装 检验和算法 当应用程序用TCP传送数据时,数据被传送入协议栈中,然后逐一通过每一层直到被当作一串比特流送入网络 注: UDP数据TCP数据基本一致. ...
- PAT 1096. Consecutive Factors
Among all the factors of a positive integer N, there may exist several consecutive numbers. For exam ...
- GeoTrust 企业(OV)型 多域名(SAN/UC)版 SSL证书
GeoTrust 企业(OV)型 多域名(SAN/UC)版 SSL证书(GeoTrust True BusinessID With Multi-Domain(SAN/UC) ),支持多域名,属于企业 ...
- 【Codeforces 478C】Table Decorations
[链接] 我是链接,点我呀:) [题意] 给你r,g,b三种颜色的气球 每张桌子要放3个气球 但是3个气球的颜色不能全都一样 (允许两个一样,或者全都不一样) 问你最多能装饰多少张桌子 [题解] 先把 ...
- 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)
[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...