在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优化,是Android应用开发中比较重要的内容。
1) 要及时回收Bitmap的内存
Bitmap类有一个方法recycle(),从方法名可以看出意思是回收。这里就有疑问了,Android系统有自己的垃圾回收机制,可以不定期的回收掉不使用的内存空间,当...
阅读全文
public void killProcess(){
ActivityManager activityManger=(ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list=activityManger.getRunningAppProcesses();//得到正在运行的进程信息
if(list!=null){
for(int i=0;i<list.size();i++){
ActivityManager.RunningAppProcessInfo apinfo=list.get(i);
System.out.pri...
阅读全文
//获取可用运存大小
private long getAvailMemory(Context context){
// 获取android当前可用内存大小
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
//mi.availMem; 当前系统的可用内存
//return Formatter.formatFileSize(context, mi.availMem);// 将获取的内...
阅读全文
//是平板返回true 不是平板返回false
public boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
阅读全文
1
public
static float GetTextWidth(String text,
float Size) { //第一个参数是要计算的字符串,第二个参数是字提大小
2
TextPaint FontPaint =
new TextPaint();
3
FontPaint.setTextSize(Size);
4
return
FontPaint.measureText(text);
5
}
阅读全文
1、程序运行错误,如何查看日志?
Windows --Show View --Logcat,打开日志试图。根据日志信息查找错误。
2、SQLiteDatabase created and never closed 错误是如何造成的?
如果用openorcreatedatabase方法创建数据库,需要手动释放。加上db.close()就可以了。建议用Android 提供的帮助类SQLiteOpenHelper来创建数据库
3、Activity之间对于复杂数据类型是通过android.os.parceable接口来传递的。
4、APK签名是用来保...
阅读全文
第六部分 Widget日历
本例实现了Widget日历,用来显示当前的日期,时间等信息。要学习开发Widget开发,需要了解AppWidget的框架结构。基于该框架,开发者可以在Ophone及模拟器上开发"外形"
类似传统的Widget小应用程序,并将其嵌入到其他应用中。
注意:Widget设计好UI后根据需要来完成更新,如果程序不需要使用定时来更新AppWidget,则最好不要使用定时更新,因为它会增加电量和CUP资源的开销。我们可以定义一个线...
阅读全文
Android中跟Touch事件有关的事件有三个:
public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。
public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。
public boolean onTouchEvent(MotionEvent event): Touch事件处理函数。
先说下事件传递的两种方式:
隧道方式:从根元素依次往下传递...
阅读全文
Android圆形图片控件效果图如下:
代码如下:
RoundImageView.java
package com.dxd.roundimageview;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import an...
阅读全文
Activity的启动分为两种方式,显示方式和隐式方式,显示方式就是在通过intent启动Activity时指定了Activity的包名和类名,
而隐式方式则在初始化Intent时只指定action或action和data属性。接下来将来总结显示启动和隐式启动的方式和注意事项。
1、Activity的显示启动:通过包名来启动(不管是启动自己应用的Activity还是启动其他应用的Activity)
1.1 ComponentName对象的方式ComponentName cn = new ComponentName("com.exam...
阅读全文