Android开发中常见问题小结

1、 Failed to install on device 'emulator-5554': timeout

解决办法:eclipse -> window -> Preferences -> Android ->

DDMS -> ADB connection time out(ms).把这个时间设置的长一些,默认是5秒,

改成20秒就可以了。


2、找不到activity类: android.content.ActivityNotFoundException: Unable to find explicit activity class {xxxx}


解决办法:在AndroidMainifest.xml中增加activity的申明

如:<activity android:name=".xxxActivity" >

        </activity>
3、无法使用网络:Permission denied(maybe missing internet permission)
解决办法:在AndroidMainifest.xml中增加允许使用网络选项(在</application>结束标签之后>):
<uses-permission android:name="android.permission.INTERNET" />
其他的使用权限,也应该在要使用时到AndroidMainifest.xml添加权限,比如:我们在开发手机蓝牙功能时,就必须添加相应的蓝牙权限。
4、 如何提高ListView的刷新效率?
解决办法:基于AbsListView类的控件比如 ListView、GridView等等都需要通过绑定Adapter来实现数据更新,这里操作Adapter我们一般设计的尽量布局文件简练高效些,比如布局使用Java代码编写代替Xml文件,控制刷新范围,可以考虑ArrayAdapter,而不是BaseAdapter的派生类。
5、如何解决加载大图片出现的内存溢出问题?
解决办法:首先,尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 其次,可以改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source, decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode, 无需再使用java层的createBitmap,从而节省了java层的空间。 如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常 。另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。
6、无法加载xml中的view,报 java.lang.NullPointerException 异常;
解决办法:可能忘记加载activity的layout文件:
setContentView(R.layout.main);
7、Intent intent=new Intent();
        intent.setClass(Activity1.this,Activity2.class);
        startActivity(intent);
        使用Intent打开另一个Activity时,可能出现以下错误:
“sorry! the application has stopped unexpectedly,please try again”.
解决办法:要启动的Activity没有在AndroidManifest.xml文件中声明,解决方法当然是声明该Activity

8、 在新的线程中 public class HttpThread extends Thread {...}

增加一个弹出窗体:
new AlertDialog.Builder(this).setTitle("数据加载失败").setMessage("请检查网络连接情况")
.setPositiveButton("OK", new DialogInterface.OnClickListener()
{            
    public void onClick(DialogInterface dialoginterface, int i){}            
}).show();
出现:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare();
解决办法:
不能在线程中操作UI界面,应该按如下方法:
new AlertDialog.Builder(com.nantsing.infoquery.chuanbo_detail.this).setTitle("数据加载失败").setMessage("请检查网络连接情况")           .setPositiveButton("OK", new DialogInterface.OnClickListener(){    public void onClick(DialogInterface dialoginterface, int i){}

9、Android如何动态改变ImageView的大小
解决办法:在layout.xml文件中定义了ImageView的绝对大小后,无法动态修改以后的大小显示,其实平台在设计UI控件时考虑到这个问题,为了适应不同的Drawable可以通过在xml的相关ImageView中加入android:scaleType="fitXY" 这行即可,但因为使用了缩放可能会造成当前UI有所变形。使用的前提是限制ImageView所在的层,可以使用一个内嵌的方法限制显示。

10、Android中bitmap的平移操作如何完成?
解决办法:对于平移我们可以通过Canvas类的public void translate (float dx, float dy) 方法来实现,参数一为平面x轴的位置,类型为浮点型,参数二为y轴的位置。不使用Matrix类,我们可以直接构造一个空的Bitmap对象,通过Canvas类提供的drawBitmap方法画出我们需要的Bitmap对象,然后调用translate方法来实现平移,比如将位图向右平移2个像素,可以为translate(2,0) 而向下移动3个像素translate(0,-3)。
11、Android中ListView在ScrollView中无法正常显示
解决办法:对于ListView放在ScrollView中时,目前Android平台仍然存在bug,状态是显示的ListView仅仅是一行半。通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView的构造没有发现好的解决办法。但是可以通过自己实现ListView来解决。一种方案是:重写ListView的onMeasure()重新计算显示行数。第二种方案是:使用RelaiveLayout布局方式,可以满足ScrollView构造。

12、 Android中Drawable,Bitmap,Canvas以及Paint的关系与区别?

Bitmap - 称作 位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
Drawable - 作为Android平下通用的 图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
Canvas - 名为 画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。
Paint - 我们可以把它看做一个 画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。



开发工具为Android Studio 编译工具为gradle,



  1. Execution failed for task ':mergeDebugResources'

     

    错误2:Execution failed for task ':mergeDebugResources'.
    > Error: Failed to run command:
            D:\soft_dev\android-sdk-windows\android-sdk-windows\build-tools\19.1.0\a
    apt.exe s -i E:\Aworkspace\NewWorkspace\VipOneToOneGradleTest\res\drawable-xhdpi
    \white.png -o E:\Aworkspace\NewWorkspace\VipOneToOneGradleTest\build\intermediat
    es\res\debug\drawable-xhdpi-v4\white.png
    Error Code:
            42
    Output:
            libpng error: Not a PNG file

    解决:这时候是不是感觉很迷茫,出错了对吧,下面就告诉你是怎么回事,怎么出错的。
    错误很简单却也很难发觉,原因就是在这张图片上,为什么是图片上呢,刚开始的时候你的图片是不是.jpg格式的,然而你把后缀名改成了.png的以为就可以了是吧,其实不是这样,你只是把格式改成了.png,其实它还是.jpg格式的。要将图片真正转换成.png格式的才行。随便找个图片转换工具就可以解决。

    注意:在存放图片时千万不要将格式为.jpg的图片改成.png格式,千万不要偷懒,一定要将格式转换成PNG格式的图片,否则编译将不通过。切记!!!!

  2.   Missing one of the key attributes 'action#name,category#name' on element
     intent-filter at AndroidManifest.xml:342:13
    Output:
            res\drawable-xhdpi-v4\white.png:0: error: Resource entry white is alread
    y defined.
            res\drawable-xhdpi-v4\white.jpg:0: Originally defined here.

    ce\NewWorkspace\Vi
     非法字符: \65279
    解决:
    由于java文件是已utf-8-bom的形式保存的,至于为何导致了这种情况,无需考究,通过editplus打开文件就可以看到。然后另存为utf-8形式就可以了。再将修改了编码的文件替换项目中报错的文件,错误就解决了

  3. FAILURE: Build failed with an exception.
    * What went wrong:Execution failed for task ':lint'.

    > Lint found errors in the project; aborting build.

    Fix the issues identified by lint, or add the following to your build script to proceed with errors:

android {

    lintOptions {

      abortOnError false

    }

}

解决:这种错误根据英文提示直接解决就可以了


  1. Execution failed for task ':mergeDebugResources'

     

    错误2:Execution failed for task ':mergeDebugResources'.
    > Error: Failed to run command:
            D:\soft_dev\android-sdk-windows\android-sdk-windows\build-tools\19.1.0\a
    apt.exe s -i E:\Aworkspace\NewWorkspace\VipOneToOneGradleTest\res\drawable-xhdpi
    \white.png -o E:\Aworkspace\NewWorkspace\VipOneToOneGradleTest\build\intermediat
    es\res\debug\drawable-xhdpi-v4\white.png
    Error Code:
            42
    Output:
            libpng error: Not a PNG file

    解决:这时候是不是感觉很迷茫,出错了对吧,下面就告诉你是怎么回事,怎么出错的。
    错误很简单却也很难发觉,原因就是在这张图片上,为什么是图片上呢,刚开始的时候你的图片是不是.jpg格式的,然而你把后缀名改成了.png的以为就可以了是吧,其实不是这样,你只是把格式改成了.png,其实它还是.jpg格式的。要将图片真正转换成.png格式的才行。随便找个图片转换工具就可以解决。

    注意:在存放图片时千万不要将格式为.jpg的图片改成.png格式,千万不要偷懒,一定要将格式转换成PNG格式的图片,否则编译将不通过。切记!!!!

  2.   Missing one of the key attributes 'action#name,category#name' on element
     intent-filter at AndroidManifest.xml:342:13
    Output:
            res\drawable-xhdpi-v4\white.png:0: error: Resource entry white is alread
    y defined.
            res\drawable-xhdpi-v4\white.jpg:0: Originally defined here.

    ce\NewWorkspace\Vi
     非法字符: \65279
    解决:
    由于java文件是已utf-8-bom的形式保存的,至于为何导致了这种情况,无需考究,通过editplus打开文件就可以看到。然后另存为utf-8形式就可以了。再将修改了编码的文件替换项目中报错的文件,错误就解决了

  3. FAILURE: Build failed with an exception.
    * What went wrong:Execution failed for task ':lint'.

    > Lint found errors in the project; aborting build.

    Fix the issues identified by lint, or add the following to your build script to proceed with errors:

android {

    lintOptions {

      abortOnError false

    }

}

解决:这种错误根据英文提示直接解决就可以了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值