1、避免建立对象
世界上没有免费的对象。虽然GC为每个线程都建立了临时对象池,可以使创建对象的代价变得小一些,但是分配内存永远都比不分配内存的代价大。如果在用户界面循环中分配对象内存,就会引发周期性的垃圾回收, 除非必要,应尽量避免尽力对象的实例。
2、使用本地方法
在处理字串的时候,不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊实现的方法。这些方法都是使用C/C++实现的,比起Java循环快10到100倍。
但也并非要完全使用本地方法,调用本地方法的代价要高于调用解释方法。所以如果可以避免,就不应使用本地方法去做一些并不复杂的运算。
3、选择虚类而不是接口
4、用静态方法比虚方法好
如果不需要访问一个对象的成员变量,那么请把方法声明成static。虚方法执行的更快,因为它可以被直接调用而不需要一个虚函数表。另外你也可以通过声明体现出这个函数的调用不会改变对象的状态。
5、不用getter和setter
在很多本地语言如C++中,都会使用getter(比如:i = getCount())来避免直接访问成员变量(i = mCount)。在C++中这是一个非常好的习惯,因为编译器能够内联访问,如果你需要约束或调试变量,你可以在任何时候添加代码。在Android上,这就不是个好主意了。虚方法的开销比直接访问成员变量大得多。在通用的接口定义中,可以依照OO的方式定义getters和setters,但是在一般的类中,你应该直接访问变量。
6、将成员变量缓存到本地
访问成员变量比访问本地变量慢得多,下面一段代码:
for (int i = 0; i < this.mCount; i++)mpItem(this.mItems[i]);你应该写成:int count = this.mCount;Item[] items = this.mItems;for (int i = 0; i < count; i++)mpItems(items[i]);(显示的使用”this”是为了表明这些是成员变量)
另一个相似的原则是:永远不要在for的第二个条件中调用任何方法。如下面方法所示,在每次循环的时候都会调用getCount()方法,这样做比你在一个int先把结果保存起来开销大很多。
for (int i = 0; i < this.getCount();i++)
mpItems(this.getItem(i));同样如果你要多次访问一个变量,也最好先为它建立一个本地变量
7、使用常量
将一个方法或类声明为”final”不会带来性能的提升,但是会帮助编译器优化代码。举例说,如果编译器知道一个”getter”方法不会被重载,那么编译器会对其采用内联调用。
也可以将本地变量声明为”final”,同样,这也不会带来性能的提升。使用”final”只能使本地变量看起来更清晰些
㈡ 求基于Android校园开发的实例,详细代码及过程,谢谢了!!!
把你问的具体一点,你是想要做安卓开发吗? 开发什么软件?什么是校园开发的实例
㈢ android静态方法和实例方法的区别
静态方法的调用,是类名后直接加静态方法即可。实例方法必须将类实例化后,用实例调用该实例方法。
静态方法,只能调用类中的其他静态属性和静态方法,不能调用类中的非静态属性和非静态方法。
实例方法,可以调用静态属性和静态方法,也可以调用实例属性和实例方法。
静态方法是属于类的必须由类来调用,实例方法是属于实例的必须实例化类后,用类的实例调用。
㈣ 有没有什么好的android 实例开发的源代码网站
github.com上有很多,想找那种类型的去这个网站上搜索就行,github主要是代码托管,好多公开的项目,都可以在上面找到源码
㈤ 安卓开发 有个例子不是很明白
这是安卓给控件绑定事件的基本写法,也是最简单的方法,如果你控件的事件比较少,可以直接这么写,但是如果有很多个按钮,你全写一遍new OnclickListener(){xxxxx};这样很容易出现代码冗余,就可以让activity实现OnclickListener接口,重新Onclick事件,在里面做switch判断,button1.setOnclickListener(this);就可以这样写了。
㈥ android 代码布局简单的例子
android LinearLayout 布局实例代码,参考如下:
<?xml version="1.0" encoding="utf-8"?>
<!--
<LinearLayout>
线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- android:orientation="vertical" 表示竖直方式对齐
android:orientation="horizontal"表示水平方式对齐
android:layout_width="fill_parent"定义当前视图在屏幕上
可以消费的宽度,fill_parent即填充整个屏幕。
android:layout_height="wrap_content":随着文字栏位的不同
而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思 。
-->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:text="red"
android:gravity="center_horizontal"
android:background="#aa0000"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="green"
android:gravity="center_horizontal"
android:background="#00aa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="blue"
android:gravity="center_horizontal"
android:background="#0000aa"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="yellow"
android:gravity="center_horizontal"
android:background="#aaaa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2">
<TextView
android:text="row one"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row two"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row three"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row four"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
Java代码 Views.java
package com.cn.view;
import android.app.Activity;
import android.os.Bundle;
public class Views extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
㈦ 如何在编写android中的控件 一个窗口 四个基本按钮的 求代码示例
在Activity中重写下onCreateOptionsMenu方法就OK了
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuItem item1=menu.add(1, 1, 1, "新建");
MenuItem item2=menu.add(1, 2, 2, "打开");
MenuItem item3=menu.add(2, 3, 3, "删除");
MenuItem item4=menu.add(2, 4, 4, "退出");
item1.setIcon(R.drawable.btn_check_off_disable_focused);
item2.setIcon(R.drawable.btn_check_off_pressed);
item3.setIcon(R.drawable.btn_check_off_selected);
item4.setIcon(R.drawable.btn_check_on_disable_focused);
return true;
}
㈧ Android实例问题 请看 实例化了DButilImpl实现类 调用了实现类里面的插入信息的方法
你应该给你的BtnAdd.setOnClickListener(listener);
这个写在你的findView的下面,别写事件里面
然后在你的listener里面写
switch (v.getId()) {
case R.id.BtnAdd:
bit.insert(user);
break;
㈨ 急求android中SQLite样例代码
嘛~大致就是 SQLiteDatabase Mysqlite = this.openOrCreateDatabase("数据库名.db",MODE_PRIVATE,null) 这就创建了数据库对象
插入是 Mysqlite.execSql("insert into ....") 或者
ContentValues cv = new ContentValues();
cv.put(字段名,字段值);
然后 Mysqlite.insert(表名,null,cv);
delete是一样的
查询复杂一点,必须用游标实现 我具体给你一个我自己写的一个封装好的数据库类吧,这个里面用到了SQLiteOpenHelper这个类,你查阅下相关资料
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SQLiteManager {
Context mContext;
DataHelper helper;
SQLiteDatabase Mysqlite;
public static String DataName = "MyData.db";
public static String t_Name = "table3";
public static String Id = "_id";
public static String v_Name = "Name";
public static int DataVersion = 1;
public static final String Table_CREATETABLE = "CREATE TABLE table3(_id INTEGER PRIMARY KEY autoincrement,Name TEXT)";
private class DataHelper extends SQLiteOpenHelper{
public DataHelper(Context context) {
super(context, DataName, null,DataVersion);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(Table_CREATETABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
public SQLiteManager(Context context){
mContext = context;
}
public void open(){
helper = new DataHelper(mContext);
Mysqlite = helper.getWritableDatabase();
}
public void close(){
helper.close();
}
public void Insert(String values){
ContentValues cv = new ContentValues();
cv.put(v_Name,values);
Mysqlite.insert(t_Name, Id,cv);
}
/* 通过Cursor查询所有数据 */
public Cursor fetchAllData()
{
return Mysqlite.query(t_Name, new String[] { Id, v_Name}, null, null, null, null, null);
}
public Cursor fetchData(int RowId){
return Mysqlite.query(true,t_Name, new String[] { Id, v_Name}, "_id="+RowId, null, null, null,null,null);
}
㈩ 谁有android应用程序开发实例代码或者在哪儿可以下载到完整的代码
你要开发Android程序,必需下载SDK,而SDK里面就自带了大量的DEMO,你建工程的时候就可以看到,或者到SDK目录下的samples文件里面找,都按平台版本分好类了的,这都是官方的DEMO代码。