1.在android中,请简述jni的调用过程。
2.简述Android应用程序结构是哪些?
3. 请继承SQLiteOpenHelper实现:
1).创建一个版本为1的“diaryOpenHelper.db”的数据库,
2).同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100
长度, content字符型1000长度)
3).在数据库版本变化时请删除diary表,并重新创建出diary表。
4.页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度
显示工作。
问答题答案
1.jni的调用过程
1)安装和下载Cygwin,下载 Android NDK
2)在ndk项目中JNI接口的设计
3)使用C/C++实现本地方法
4)JNI生成动态链接库.so文件
5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可
2.
Android应用程序结构是:
Linux Kernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application
Framework(开发框架包)、Applications (核心应用程序)
3.
public class DBHelper extends SQLiteOpenHelper {
publicfinal static String DATABASENAME = "diaryOpenHelper.db";
publicfinal static int DATABASEVERSION = 1;
//创建数据库
publicDBHelper(Context context,String name,CursorFactory factory,int version)
{
super(context,name, factory, version);
}
//创建表等机构性文件
publicvoid onCreate(SQLiteDatabase db)
{
Stringsql ="create table diary"+
"("+
"_idinteger primary key autoincrement,"+
"topicvarchar(100),"+
"contentvarchar(1000)"+
")";
db.execSQL(sql);
}
//若数据库版本有更新,则调用此方法
publicvoid onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
{
Stringsql = "drop table if exists diary";
db.execSQL(sql);
this.onCreate(db);
}
}
4.
public class ProgressBarStu extendsActivity {
privateProgressBar progressBar = null;
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressbar);
//从这到下是关键
progressBar= (ProgressBar)findViewById(R.id.progressBar);
Threadthread = new Thread(new Runnable() {
@Override
publicvoid run() {
intprogressBarMax = progressBar.getMax();
try{
while(progressBarMax!=progressBar.getProgress())
{
intstepProgress = progressBarMax/10;
intcurrentprogress = progressBar.getProgress();
progressBar.setProgress(currentprogress+stepProgress);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
});
thread.start();
//关键结束
}
}