• Android小技术知识(多用于面试)


    Android Dev Doc

    Android 开发 多使用内部类 使用方便且效率高

    UI方面的知识

    一、在编写layout的xml文件时,一定要仔细!如果在报错的时候,如何解决?
    解决:将xml仔细检查并保存后再运行。

    二、在运行程序时,还未运行onCreate()方法之前就报错(MyAndroid(Project))!
    原因:在用eclipse 新建的项目的AndroidManifest.xml 文件中的application节点中android:lable写了。去掉后就无错。(待验证!)

    三、onCreateContextMenu -> 创建长按菜单键 显示的菜单!处理菜单选择事件方法-> onContextItemSelected

    四、在对数据库操作时,一定要记住open..

    五、Fragments 类似于Activity 生命周期有点类似。。。一个Activity中可以有很多个Fragments,一个Fragments可以被多个Activity使用,要实现Fragments也必须去跟Activity一样去集成父类。

    六、两种方式将Layout中的XML转换为View

    1. LayoutInflater inflater = (强转)getSystemService(Context.LAYOUT_INFLATER_SERVICE) inflater.inflater(layoutId,null);
    2. LayoutInflater inflater = LayoutInflater.from(this);

                       final View textEntryView = inflater.inflate(R.layout.alert_dialog_text_entry, null);

    七、Dialog的机制 :当Activity中调用showDialog(int id)时会去回调onCreateDialog() 回调执行完毕后执行onPrepareDialog()。

    八、利用线程来实现ProgressBar

    1. 新建一个匿名类实现Runable接口,run方法里面来for循环progressBar的max value
    2. 在for内利用android.os.Handler类的实例的post方法来对progressBar实例的操作(其中post的参数又是一个Runable的实现类-利用匿名类来实现run方法,在方法内对progressBar的实例操作)。->注意:progressbar 的max越大越能看出效果。

    九、得到NotificationManager 以及Notification的使用

    1. 在Activity中 nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    2. new Notification(显示图片的ID,显示的文本,Notification显示的时间)
    3. Notification的使用步骤:
      1. 所有的Notification都是由NotificationManager来管理的,因此必须得到NotificationManager的实例
      2. 构造一个Notification(注意setLatestEventInfo这个方法是用来:1:当展开Notification时如何呈现Notification 2:当用户单击时如何处理Notification)
      3. 利用NotificationManager的实例来启动Notification
    4.  

    十、D

    数据存储的操作

    一、数据存储的3中方式

    1. SharedPreferences 方式 会以xml存在data/data/XXX.xml中
    2. 文件存储 (要在程序当中读取文件那么文件应该放在res/raw用以下方式获得:Resources res = getResources(); res.openRawResource(R.raw.xxx) 即可)
    3. SQLite存储方式

    二、利用ContentValues 来存储到数据库

    1. ContentValues cv = new ContentValues(); cv.putXXX(Key,Value)
    2. Xx.insert(TableName,cv…..)

    三、利用ContentProvider实现跨程序访问(由于Android系统中的数据都是私有的)

    1. 新建一个日记类 当中含有内部类实现了BaseColumns接口(该内部类中包含了很多字段URI 等等),该日记类包含了授权字段,授权的字段必须跟以下类注册的provider要保持一致
    2. 新建一个子类去继承ContentProvider 重写它的onCreate(),query,insert,update,getType 等方法,并且在AndroidManifest.xml文件中进行注册。

    四、使用WebServices

    1. 在Manifest.xml文件中赋予权限 Android.permission.INTERNET
    2. 以POST的方式发送请求
    3. 以HttpRespone 接受返回值。

    五、在创建数据表的时候,必须包含_id字段。如果未包含,必须升级数据库或者删除表重新建。OnUpgrade()方法升级。

    程序开发步骤

    一、实现UI

    二、数据存储和操作

    三、实现多页面跳转

    四、增加Service

    五、完善细节

    六、应用测试

    finishActivity(RESULT_OK)不能结束当前的activity,只有调用finish()才能。

    为什么我不调用startManagingCursor()方法也可以取出数据。。

    当查询的Cursor只有一个结果的时候,需要调用moveToFrist()方法,要不会抛出数组下标异常android.database.CursorIndexOutOfBoundsException: Index -1

    实现GoogleMap

    一、需要com.google.map.(jar 包)

    二、在CMD下利用Java的keytool.exe 生成API KEY

    a)         keytool –list –alias androiddebugkey –keystore “debug.keystore的路径 如:C:Documents and SettingsAdministrator.android”

    b)         提示输入密码,输入:Android

    c)         Copy 产生的key

    三、在Google网站上申请API KEY

    a)         进入:http://code.google.com/intl/zh-CN/android/maps-api-signup.html

    b)         输入上步得到的MD5认证KEY

    c)         点击Generate API Key

    d)         得到申请到的API Key

    四、使用getSharedPreferences方法的注意事项

    a)         此方法是Context的一个方法,如果需要得到文件必须context要在manifest.xml文件中进行注册了的才会得到对象。要不会抛null异常

    五、使用BaseAdapter的注意事项

    a)         在使用adapter时,方法的getCount必须返回size(否则显示不出)

    b)         getView()方法在首次加载的时候参数converView是null

    c)         调用notifyDataSetChanged()方法来针对改变了list来更新view

    六、使用AIDL (Android Interface Description Language) 进行不同进程之间的通信

    七、AlertDialog的使用

    a)         在设置多个Button的时候不能使用同样的方法setButton();

    b)         必须使用setButton2要不然会覆盖掉前面的。

    八、D

    Android技术点(面试)

    一、Android 线程之间通信方式有几种:

    a)         Handler (如果在子线程当中实例化Handler前必须创建消息队列Looper.prepare(),实例化完毕后调用Looper.loop()启动消息队列,不用的时候quite()队列)

    b)          

    二、如果有多个Activity 如何来全部结束(4中方式)

    a)         Process.killProcess(Process.myPid());System.exit(0);             

    b)         ActivityManager am = (ActivityManager)getSystemService (ACTIVITY_SERVICE); am.restartPackage(getPackageName()); 必须在Manifest.xml申明权限:android.permission.RESTART_PACKAGES

    c)         我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,    
        这里我们在A窗口打开B窗口时在Intent中直接加入标志   
        Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
        在A窗口中使用下面的代码调用B窗口Intent intent = new Intent();  
       intent.setClass(Android123.this,CWJ.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        //注意本行的FLAG设置startActivity(intent);接下来在B窗口中需要退出时直接使用finish
        方法即可全部退出。

    d)         利用单例模式来管理全部的activity.. 点击查看

    三、Android的MVC 体现到哪里

    a)         M:res/values下生成,也可以通过代码获得   (V 通过Adapter 与M互相连接)

    b)         V: Layout /下的xml生成也可同过代码生成。

    c)         C:Activity

    四、Android中存储数据的几种方式

    a)         使用SharePreferences 存储(使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。)

    b)         文件存储

    c)         SQLite

    d)         使用ContentProvider

    e)         网络存储

    五、如何解决Android中sdcard存储文件的限制

    a)         加入两个权限:android.permission.WRITE_EXTERNAL_STORAGE(可写权限)

    b)         创建,删除权限:android.permission.MOUNT_UNMOUNT_FILESYSTEMS

    六、Android 请求服务端的几种方式

    a)         第三方插件ksoap

    b)         HttpURLConnection

    七、Android 中有几种Adapter

    八、SimpleAdapter,SimpleCursorAdapter,ArrayAdapter

  • 相关阅读:
    [leetcode]N-Queens II
    基于Linux的智能家居的设计(4)
    eclipse集成Python开发环境
    创业三年,离开公司,请各位看一下我的简历,指点一下未来的路
    Jquery实现选项卡功能
    R语言中两个数组(或向量)的外积怎样计算
    《Java程序猿面试笔试宝典》之组合与继承有什么差别
    Sublime Text3打造U盘便携Lua IDE
    php Laravel 框架之建立后台目录
    树的同构(25 分)
  • 原文地址:https://www.cnblogs.com/wangmars/p/3290709.html
Copyright © 2020-2023  润新知