StrictMode.setThreadPolicy(
new
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
// or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(
new
StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
//探测SQLite数据库操作
.penaltyLog()
//打印logcat
.penaltyDeath()
.build());
timer.schedule(task, 1000 , 1000 ); // 延时1000ms后执行,1000ms执行一次
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
android在进入第一个activity之前会显示一个带有标题栏的空白界面然后再进入第一个activity?
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
android 动态添加控件
android图标常用颜色

vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()
{
public boolean onPreDraw()
{
if (hasMeasured == false)
{
}
return true;
}
});
phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI;
phoneInfo += ", TAGS: " + android.os.Build.TAGS;
phoneInfo += ", VERSION_CODES.BASE: " + android.os.Build.VERSION_CODES.BASE;
phoneInfo += ", MODEL: " + android.os.Build.MODEL;
phoneInfo += ", SDK: " + android.os.Build.VERSION.SDK;
phoneInfo += ", VERSION.RELEASE: " + android.os.Build.VERSION.RELEASE;
phoneInfo += ", DEVICE: " + android.os.Build.DEVICE;
phoneInfo += ", DISPLAY: " + android.os.Build.DISPLAY;
phoneInfo += ", BRAND: " + android.os.Build.BRAND;
phoneInfo += ", BOARD: " + android.os.Build.BOARD;
phoneInfo += ", FINGERPRINT: " + android.os.Build.FINGERPRINT;
phoneInfo += ", ID: " + android.os.Build.ID;
phoneInfo += ", MANUFACTURER: " + android.os.Build.MANUFACTURER;
phoneInfo += ", USER: " + android.os.Build.USER;
xmppPort=5222
props.getProperty("xmppPort", "5222");
很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。
sharedPrefs最终是以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。
整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,
下面代码实现向SharedPreferences中添加键值对,如果不存在则创建文件
SharedPreferences pre = getSharedPreferences("share", Context.MODE_PRIVATE);
Editor editor = pre.edit();
editor.putString("first", "one");
editor.commit();
获取存储的数据
SharedPreferences pre2 = getSharedPreferences("share", Context.MODE_PRIVATE);
String str = pre2.getString("first", "defaultValue");
如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<packagename>为com.scl.action的应用使用下面语句创建了preference。
getSharedPreferences("test",Context.MODE_WORLD_READABLE);
其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :
ContextotherAppsContext= createPackageContext("com.scl.action",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferencessharedPreferences= otherAppsContext.getSharedPreferences("test",Context.MODE_WORLD_READABLE);
Stringname = sharedPreferences.getString("username","");
intage = sharedPreferences.getInt("age",0);
如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile =new File(“/data/data/<package name>/shared_prefs/test.xml”);//<packagename>应替换成应用的包名
public HelloIntentService() { super("HelloIntentService"); }