第二部分-填空题。
25.android中常用的四个布局是
Framlayout,Linearlayout,Relativelayout,Tablelayout。
26.android的四大组件
activity,service,broadcast,contentprovide。
27.java.io包中的ObjectInputStream和ObjectOutputStream类主要用于对对象的读写。
28.android中service的实现方法是startservice和bindservice。
29.activity一般会重载7个方法用来维护其生命周期,除了onCreate,onStart,onDestory,还有onRestart,onResume,Onpause,Onstop。
30.android的数据存储的方式有SharedPrefrerence,文件存储,SQLite,contentProvider和网络。
31.当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是StartActivityResult()。
32.涉及命令行,故不整理。
33.程序运行的结果是:goodandgbc。
public class Example { String string = new String("good"); char[] chars = {'a', 'b', 'c'}; public static void main(String args[]) { Example example = new Example(); example.change(example.string, example.chars); System.out.print(example.string + "and"); System.out.print(example.chars); } public void change(String string, char chars[]) { string = "test OK"; chars[0] = 'g'; } }
34.在android中,请简述jni的调用过程。
安装和下载Cygwin,下载Android NDK
在NDK项目中JNI接口的涉及
使用C/C++实现本地方法
JNI生成动态链接库.so文件
将动态链接库复制到工程中,调用即可
35.简述Android应用程序结构是那些?
Linux Kernel (Linux 内核)
Libraries (系统运行库或者是c/c++核心库)
Application Framework (开发框架包)
Applications (核心应用程序)
36.请继承SQLiteOpenHelper实现
1)创建一个版本为1的“diaryOpenHelper.db”的数据库
2)同时创建一个“diary”表(包含一个_id主键并自增长,topic字符型100长度,content字符型1000长度
3)在数据库版本变化时删除“diary”表,并重新创建“diary”表
public class DBHelper extends SQLiteOpenHelper { public final static String DBNAME = "diaryOpenHelper.db"; public final static Integer DBVERSION = 1; // 创建数据库 public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } // 创建表机构性文件 @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE `diary`(`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `topic` VARCHAR(100), `content` VARCHAR(1000))"; db.execSQL(sql); } // 若数据库版本更新,则调用此方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS `diary`"; db.execSQL(sql); this.onCreate(db); } }
37.页面上现有ProgressBar控件progressBar,请用书写线程已10秒的时间完成其进度显示工作
public class ProgressBarStu extends AppCompatActivity { ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_progress_bar); progressBar = findViewById(R.id.progressBar); // 开辟一个新线程 Thread thread = new Thread(new Runnable() { @Override public void run() { // 获取进度条总长度 int progressBarMax = progressBar.getMax(); // 获取进度条长度的1/10 int stepProgress = progressBarMax / 10; // 如果进度条没跑完 while (progressBarMax != progressBar.getProgress()) { // 获取当前进度条已跑的长度 int currentProgress = progressBar.getProgress(); // 设置当前进度条为已跑长度加1/10 progressBar.setProgress(currentProgress + stepProgress); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); thread.start(); } }
38.请描述下Activity的生命周期
有三个必须调用的方法onCreate()——>onStart()——>onResume()
未完成,查证后补充。
39.如果后台的Activity由于某些原因被系统回收了,如何在被系统回收之前保存当前状态?
onSaveInstanceState()
当你的程序中某一个ActivityA在运行时,主动或被动地运行另一个新的ActivityB时,这个时候ActivityA会执行onSaveInstatanceState()。当ActivityB完成以后又回来找ActivityA,这个时候有两种情况:
1.ActivityA被回收,这个时候ActivityA就要重新调用onCreate()不过这个onCreate()是带上了参数saveInstanceState的。
2.ActivityA没被回收,直接调用onResume(),跳过了onCreate()。
40.如何将一个Activity设置为窗口的样式?
在AndroidManifest.xml中给Activity添加主题样式
android:theme="@style/Theme.AppCompat.Dialog"
41.如何退出Activity?如何安全退出已调用多个Activity的Application?
有tai待chang商le榷la
42.请介绍下Android中常用的五种布局。
FrameLayout 框架布局
LinearLayout 线性布局
AbsoluteLayout 绝对布局
RelativeLayout 相对布局
TableLayout 表格布局
43.请介绍Android的数据存储方式
SharedPreferences方式
文件存储方式
SQLite数据库方式
Content Provider方式
网络存储方式
44.