课程咨询 :15626927836
咨询QQ:2162606306

  • Android常用面试题解析

    发布:珠海android培训      来源:企业笔试题      时间:2015-08-03

  • 以下是由达内的金牌讲师们为大家整理的几个常见的面试题,也是大家易犯错误的题,希望对大家学习Android培训能够有所帮助。

    1,发现不会再打印相同信息,但多打印了一行onConfigChanged

    onSaveInstanceState()à

    onPause()à

    onStop()à

    onDestroy()à

    onCreate()à

    onStart()à

    onRestoreInstanceState()à

    onResume()à

    onConfigurationChanged()à

    7) 把步骤5的android:configChanges=“orientation”改成

    android:configChanges=“orientation|keyboradHidden”,执行步骤3,就只打印onConfigChanged

    onConfigurationChanged()à

    8) 把步骤5的android:configChanges=“orientation”改成

    android:configChanges=“orientation|keyboradHidden”,执行步骤4

    onConfigurationChanged()à

    onConfigurationChanged()à

    总结:

    1) 不设置activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。

    2) 设置activity的android:configChanges=“orientation”时, 切屏会重新调用各个生命周期,切横屏、竖屏时都只会执行一次,但是竖屏最后多打印一条onConfigurationChanged()

    3) 设置activity的android:configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged(),横屏一次,竖屏两次

    再总结下整个activity的生命周期:

    1) 当前activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变

    2) Activity运行时按下HOME键(跟被完全覆盖一样的)

    onSavaInstanceStateà

    onPauseà

    onStopà

    onRestartà

    onStartà

    onResumeà

    3) 未被完全覆盖,只是失去焦点:

    onPauseà

    onResumeà

    2.如何将打开res aw目录中的数据库文件?

    答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用 getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

    3.activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory() 外还有onrestart,onresume,onpause,onstop。

    4.在android中,请简述jni的调用过程。

    1)安装和下载Cygwin,下载 Android NDK

    2)在ndk项目中JNI接口的设计

    3)使用C/C++实现本地方法

    4)JNI生成动态链接库.so文件

    5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可

    5.请继承SQLiteOpenHelper实现:

    1).创建一个版本为1的“diaryOpenHelper.db”的数据库,

    2).同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100

    长度, content字符型1000长度)

    3).在数据库版本变化时请删除diary表,并重新创建出diary表。

    publicclass DBHelper extends SQLiteOpenHelper{

    public final static String DATABASENAME ="diaryOpenHelper.db";

    public final static int DATABASEVERSION =1;

    //创建数据库

    public DBHelper(Context context,Stringname,CursorFactory factory,int version)

    {

    super(context, name, factory,version);

    }

    //创建表等机构性文件

    public void onCreate(SQLiteDatabase db)

    {

    String sql ="create tablediary"+

    "("+

    "_idinteger primary key autoincrement,"+

    "topicvarchar(100),"+

    "contentvarchar(1000)"+

    ")";

    db.execSQL(sql);

    }

    //若数据库版本有更新,则调用此方法

    public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)

    {

    String sql = "drop table ifexists diary";

    db.execSQL(sql);

    this.onCreate(db);

    }

    }

    好了,通过以上达内老师的整理总结,希望对你的Android培训知识有所拓展,多做面试题是成功的一条捷径之一。

上一篇:达内准备的Android面试小测

下一篇:安卓工程师面试题实测

最新开班日期  |  更多

Android--零基础全日制班

Android--零基础全日制班

开班日期:

Android--零基础周末班

Android--零基础周末班

开班日期:

Android--高端全日制班

Android--高端全日制班

开班日期:

Android--高端周末班

Android--高端周末班

开班日期:

  • 地址:珠海市香洲区翠微金嘉创意谷
  • 课程培训电话:15626927836
    咨询QQ:2162606306     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56