欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Android總結(jié)

      時(shí)間:2019-05-12 12:47:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《Android總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《Android總結(jié)》。

      第一篇:Android總結(jié)

      Android四大組件:

      Activity—表現(xiàn)屏幕界面

      Service—后臺(tái)服務(wù)

      BroadcastReceiver—實(shí)現(xiàn)廣播機(jī)制

      ContentProvider—實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)

      Intent類:用來(lái)啟動(dòng)程序并傳遞信息的類

      用于Activity、Receiver、Service之間進(jìn)行交互的類,通過(guò)無(wú)參構(gòu)造方法創(chuàng)建對(duì)象,增加其action、category、data、extra等屬性進(jìn)行信息傳遞,并通過(guò)Activity中的startActivity(Intent intent)進(jìn)行界面的跳轉(zhuǎn);通過(guò)Context中的StartService(Intent intent)進(jìn)行服務(wù)跳轉(zhuǎn);通過(guò)Context中的registerReceive(Intent intent)對(duì)廣播進(jìn)行注冊(cè),并通過(guò)sendBroadcast()進(jìn)行無(wú)序消息發(fā)送,或可以通過(guò)SendOrderedBroadcast()進(jìn)行有序的消息發(fā)送。Handler類:

      用來(lái)發(fā)送和處理消息,并配合主線程完成UI的更新;消息Message/Runnable傳遞通過(guò)MessageQueue(消息隊(duì)列,先進(jìn)先出)進(jìn)行傳遞,并通過(guò)Lopper進(jìn)行接收,傳遞的消息可以為Message對(duì)象,也可以是Runnable對(duì)象;接收方法通過(guò)HandleMessage(Message msg)進(jìn)行獲取。SharedPreferences類:

      一般用于第一次登錄時(shí)的設(shè)置,或者是各個(gè)界面的一些小型格式設(shè)置,如字體等。是本地的小型共享數(shù)據(jù)庫(kù),可以通過(guò)Context的靜態(tài)方法getSharedPreferences獲得其對(duì)象,對(duì)象內(nèi)的值均為鍵值對(duì)進(jìn)行儲(chǔ)存。通過(guò)SharedPreferences對(duì)象調(diào)用editor()獲取SharedPreferences.Editor對(duì)象,向共享數(shù)據(jù)庫(kù)中增加數(shù)據(jù),putString(),并提交數(shù)據(jù),commit();通過(guò)SharedPreferences對(duì)象獲取共享數(shù)據(jù)庫(kù)中的數(shù)據(jù),getString()。

      ViewPager:實(shí)現(xiàn)界面滑動(dòng)的類;

      通過(guò)設(shè)置OnPagerChangedListener設(shè)置ViewPager的監(jiān)聽事件;

      實(shí)現(xiàn)流程:

      ①布局文件中設(shè)置ViewPager控件;

      ②代碼中進(jìn)行綁定控件;

      ③通過(guò)繼承PagerAdapter抽象類進(jìn)行設(shè)置適配器,并傳遞數(shù)據(jù)源;

      ④適配器中實(shí)現(xiàn)兩個(gè)抽象方法,兩個(gè)重寫方法:getCount()—獲取滑動(dòng)界面的數(shù)量,isViewFromObject()—判斷視圖是否是來(lái)自于Object文件中;重寫兩個(gè)方法,分別為destoryItem—銷毀指定位置的視圖;InstantiateItem(),設(shè)置指定位置的視圖;

      Timer與TimerTask類:

      Timer為計(jì)時(shí)器的類,通過(guò)無(wú)參構(gòu)造方法可以獲取對(duì)象,通過(guò)Timer.schedule(TimerTask task,long time)進(jìn)行設(shè)置多久后執(zhí)行某任務(wù),當(dāng)任務(wù)執(zhí)行完后,取消計(jì)時(shí)的功能,Timer.cancle();TimerTask類為抽象類,實(shí)例化時(shí),必須重寫run方法;執(zhí)行的內(nèi)容,均在run方法中進(jìn)行設(shè)置,并且執(zhí)行時(shí),已在子線程中進(jìn)行執(zhí)行。自定義View:用到的類有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;

      抽象類,通過(guò)子類繼承,獲取對(duì)象;在布局文件中綁定后,通過(guò)代碼,設(shè)置自定義View的屬性;自定義View中,通過(guò)重寫OnMeasure方法,對(duì)布局文件中的尺寸進(jìn)行測(cè)量,并由View中的setMeasureDimenson()方法,進(jìn)行數(shù)據(jù)的保存;通過(guò)重寫Ondraw方法,進(jìn)行繪圖;當(dāng)需要繪制動(dòng)態(tài)圖形時(shí),使用計(jì)時(shí)器Timer的schedule(TimerTask,long time,delay time2)方法,在time時(shí)間后,每隔time2時(shí)間,重寫執(zhí)行run方法中的內(nèi)容;將耗時(shí)的操作設(shè)置在run方法中,并通過(guò)View中的invalidate()方法刷新主線程中的繪的圖形,通過(guò)postInvalidate()刷新子線程中的圖形。數(shù)據(jù)庫(kù):

      常用的數(shù)據(jù)庫(kù)有Oracle,需要安裝和配置的大型收費(fèi)數(shù)據(jù)庫(kù);MySQL是中型數(shù)據(jù)庫(kù),同樣需要安裝配置,但不需要收費(fèi);Sqlite是小型免費(fèi)的嵌入式數(shù)據(jù)庫(kù),占用內(nèi)存低,最新版本為3.0。Sqlite數(shù)據(jù)庫(kù)需要通過(guò)SqliteDatabaseOpenHelper進(jìn)行創(chuàng)建數(shù)據(jù)庫(kù),并通過(guò)SqliteDatabase進(jìn)行數(shù)據(jù)庫(kù)的操作。輔助類是抽象類,通過(guò)繼承,重寫兩個(gè)方法,并在子類的構(gòu)造方法中通過(guò)OpenHelper的構(gòu)造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建,在onCreate方法中,進(jìn)行數(shù)據(jù)庫(kù)表的創(chuàng)建,在onUpdate中進(jìn)行數(shù)據(jù)庫(kù)的版本更新。在數(shù)據(jù)庫(kù)的操作類中,執(zhí)行exect方法,通過(guò)sql語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。Create table student(_id integer primary key auto increament ,name text);insert into student(_id,name)values(1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student;ListView、GridView適配器的優(yōu)化:

      將布局文件中的控件進(jìn)行封裝,當(dāng)視圖加載時(shí),判斷可變視圖是否存在,當(dāng)不存在時(shí),通過(guò)布局文件獲取視圖,并新建封裝類,將地址通過(guò)setTag()進(jìn)行發(fā)送;當(dāng)視圖存在時(shí),重復(fù)利用地址—getTag()。反射:

      存儲(chǔ)數(shù)據(jù)的方式:

      共享數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)、文件、網(wǎng)絡(luò)、內(nèi)容提供者

      廣播:

      廣播傳播時(shí),需要接收者、發(fā)送者、廣播頻道;根據(jù)發(fā)送者的發(fā)送方式不同,分為有序廣播、無(wú)序廣播;有序廣播為接收者有接收順序,根據(jù)設(shè)置的優(yōu)先級(jí)不同,確定先后順序,接收者同時(shí)也是發(fā)送者,向后面的廣播發(fā)送消息,發(fā)送過(guò)程中,可以添加信息,也可以停止廣播的傳輸;無(wú)序廣播,接收者之間無(wú)聯(lián)系,均從發(fā)送者處接收信息;廣播在傳輸過(guò)程中,不能被添加信息,也不可能被停止。廣播在發(fā)送前,需要對(duì)接收者進(jìn)行注冊(cè),注冊(cè)方式有兩種,動(dòng)態(tài)注冊(cè)、靜態(tài)注冊(cè)。動(dòng)態(tài)注冊(cè),是在代碼中進(jìn)行,通過(guò)Context對(duì)象調(diào)用靜態(tài)方法進(jìn)行注冊(cè),所有的廣播均可以用動(dòng)態(tài)注冊(cè),其生命周期依賴于應(yīng)用,相對(duì)于靜態(tài)注冊(cè),比較節(jié)省內(nèi)存;靜態(tài)方法在清單文件中進(jìn)行注冊(cè),部分系統(tǒng)廣播不能通過(guò)靜態(tài)注冊(cè)進(jìn)行,其生命周期依賴于系統(tǒng),當(dāng)系統(tǒng)啟動(dòng),即運(yùn)行接收廣播,較耗內(nèi)存。廣播接收者需要繼承BroadcastReceiver,并實(shí)現(xiàn)抽象方法onReceive(),通過(guò)回調(diào)接口,進(jìn)行數(shù)據(jù)的傳輸。注意:廣播發(fā)送前,必須進(jìn)行接收者的注冊(cè),并且,當(dāng)顯示跳轉(zhuǎn)時(shí),不需要意圖過(guò)濾器。安卓布局:九種布局

      線性布局,水平或垂直方向兩種格式,主要特點(diǎn)為權(quán)重,即規(guī)定各控件在視圖中的占有的比例;

      相對(duì)布局,相對(duì)于父控件或兄弟控件的布局,各控件需指定相對(duì)位置; 絕對(duì)布局,指定各控件在視圖中的絕對(duì)位置,幾乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 幀布局:覆蓋前面布局的布局,一般用于暫停按鈕等; 風(fēng)格布局:可以跨行、跨列的布局,占滿換行;

      左右側(cè)滑:可以實(shí)現(xiàn)左右側(cè)滑,通過(guò)設(shè)置主菜單和二級(jí)菜單設(shè)置左右兩個(gè)菜單; 下拉刷新:設(shè)置下拉刷新、上拉加載的功能; 抽屜布局;

      安卓版本及對(duì)應(yīng)的API:

      1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四層架構(gòu):

      應(yīng)用層:Java語(yǔ)言開發(fā),主要從事App開發(fā);

      運(yùn)行庫(kù)層:Java語(yǔ)言與C語(yǔ)言,View視圖、管理類等的開發(fā); 架構(gòu)層:C語(yǔ)言與Linux語(yǔ)言,各種框架、瀏覽器等; 內(nèi)核層:Linux、C語(yǔ)言,開發(fā)各種驅(qū)動(dòng); 安卓四大組件:

      Activity:界面,實(shí)現(xiàn)程序與用戶之間的交換,有自己的生命周期,七個(gè)生命周期;4種啟動(dòng)模式 Service:

      BroadcastReceive:三要素,發(fā)送者、接收者、發(fā)送頻道(Intent);類型:有序(接收有序,有數(shù)據(jù)傳送,可以攔截?cái)?shù)據(jù))、無(wú)序廣播(相對(duì));注冊(cè)方式:靜態(tài)注冊(cè),持久監(jiān)聽,占用內(nèi)存比較高生命周期跟隨系統(tǒng),動(dòng)態(tài)注冊(cè)(代碼中),所有廣播都可以動(dòng)態(tài)注冊(cè),部分系統(tǒng)廣播不能動(dòng)態(tài)注冊(cè),臨時(shí)監(jiān)聽,占用內(nèi)存較少,生命周期隨應(yīng)用進(jìn)行;

      ContentProvide:不能存放數(shù)據(jù),五種存放數(shù)據(jù)方式之一,特點(diǎn)為:①為數(shù)據(jù)的獲取等操作添加一個(gè)統(tǒng)一的接口②可以實(shí)現(xiàn)跨應(yīng)用訪問(wèn)數(shù)據(jù);③可以實(shí)現(xiàn)Android中通訊錄、消息、音頻、視頻等的訪問(wèn)或操作;通過(guò)ContentReceive進(jìn)行數(shù)據(jù)的訪問(wèn),可以對(duì)數(shù)據(jù)進(jìn)行增刪改查操作。

      動(dòng)畫: IO流: 序列化: AlertDialog:

      Set實(shí)現(xiàn)類: 手機(jī)電量檢測(cè):

      自定義SurfaceView:

      自定義View:三個(gè)構(gòu)造方法的區(qū)別

      Message:Handler.obtain/new/Message.obtain

      HttpUriConnection訪問(wèn)網(wǎng)絡(luò)

      gride 異步任務(wù) 動(dòng)畫

      抽象類和接口 反射 克隆 序列化 側(cè)滑的實(shí)現(xiàn) 數(shù)據(jù)庫(kù) Socket:

      Gson解析

      異步任務(wù)和子線程區(qū)別 WebView 版本更新 照片的圓角化

      Collection與Collections Sql語(yǔ)句

      MVP框架與MVC: TCP與UDP的區(qū)別: 一鍵分享的流程: Http協(xié)議的理解: 不使用框架訪問(wèn)網(wǎng)絡(luò): List集合與set集合: 自定義View的流程: 線性布局的特點(diǎn): ViewPager的原理: 服務(wù)的啟動(dòng)方式:

      Activity的啟動(dòng)方式: Xml數(shù)據(jù)解析:

      第二篇:Android WebView總結(jié)

      Android WebView總結(jié)

      1、添加權(quán)限:AndroidManifest.xml中必須使用許可“Android.permission.INTERNET”,否則會(huì)出web page not available錯(cuò)誤。

      2、在要Activity中生成一個(gè)WebView組件:WebView webView = new WebView(this);

      3、設(shè)置WebView基本信息:

      如果訪問(wèn)的頁(yè)面中有Javascript,則webview必須設(shè)置支持Javascript。

      webview.getSettings().setJavaScriptEnabled(true);

      觸摸焦點(diǎn)起作用

      requestFocus();

      取消滾動(dòng)條

      this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

      4、設(shè)置WevView要顯示的網(wǎng)頁(yè):

      互聯(lián)網(wǎng)用:webView.loadUrl("");本地文件存放在:assets文件中

      5、如果希望點(diǎn)擊鏈接由自己處理,而不是新開Android的系統(tǒng)browser中響應(yīng)該鏈接。給WebView添加一個(gè)事件監(jiān)聽對(duì)象(WebViewClient)

      并重寫其中的一些方法

      shouldOverrideUrlLoading:對(duì)網(wǎng)頁(yè)中超鏈接按鈕的響應(yīng)。

      當(dāng)按下某個(gè)連接時(shí)WebViewClient會(huì)調(diào)用這個(gè)方法,并傳遞參數(shù):按下的url

      onLoadResource

      onPageStart

      onPageFinish

      onReceiveError

      onReceivedHttpAuthRequest6、如果用webview點(diǎn)鏈接看了很多頁(yè)以后,如果不做任何處理,點(diǎn)擊系統(tǒng)“Back”鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,如果希望瀏覽的網(wǎng)頁(yè)回退而不是退出瀏覽器,需要在當(dāng)前Activity中處理并消費(fèi)掉該Back事件。

      覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法。

      public boolean onKeyDown(int keyCoder,KeyEvent event){

      if(webView.canGoBack()&& keyCoder == KeyEvent.KEYCODE_BACK){

      webview.goBack();//goBack()表示返回webView的上一頁(yè)面

      return true;

      }

      return false;

      }

      第三篇:Android 課程總結(jié)

      一、Android開發(fā)環(huán)境的搭建。

      1、Android SDK的安裝;

      2、ADT的安裝和配置;

      3、Android 模擬器的配置。

      二、編寫第一個(gè)Android程序───Hello World(1學(xué)時(shí))

      1、創(chuàng)建一個(gè)Android應(yīng)用程序的步驟;

      2、Android 應(yīng)用程序目錄結(jié)構(gòu);

      3、AndroidManidest.xml文件的作用;

      4、Android相關(guān)資源文件的作用。

      三、Activity及Activity和Intent(2學(xué)時(shí))

      1、Activity的主要作用;

      2、創(chuàng)建一個(gè)Activity的方法;

      3、在AndroidManifest.xml文件中的注冊(cè)應(yīng)用Activity的方法;

      4、在Activity中添加控件的方法;

      5、多個(gè)Activity之間的切換;

      6、Intent的基本作用;

      7、在一個(gè)Activity中啟動(dòng)另一個(gè)Activity的方法;

      8、使用Intent在Activity中傳遞數(shù)據(jù)的基本方法。

      四、常見控件的使用方法(基礎(chǔ))

      1、TextView的使用方法;

      2、EditText的使用方法;

      3、Button的使用方法;

      4、Menu的使用方法。

      五、Activity的生命周期(2學(xué)時(shí))

      1、Activity的七個(gè)周期:

      ① OnCreate();② OnDestroy();③ OnPause();④ OnRestart();⑤ OnResume();⑥ OnStart();⑦ OnStop();

      2、Task的基本概念;

      3、Activity和Task之間的關(guān)系;

      4、對(duì)話框風(fēng)格的Activity的使用方法。

      六、Activity的布局(3學(xué)時(shí))

      1、LinearLayout的使用方法;

      2、TableLayout的使用方法;

      3、LinearLayout和TableLayout的嵌套使用;

      4、RelativeLayout的使用方法(重點(diǎn)、難點(diǎn))

      七、常用控件是使用方法二(2學(xué)時(shí))

      1、RadioGroup和RadioButton的使用方法;

      2、CheckBox的使用方法;

      3、Toast的基本用法。

      4、ProgressBar的使用方法;

      5、ListView的用法。

      八、Handler的使用方法(2學(xué)時(shí))

      1、Handler的基本概念;

      2、Handler的基本用法;

      3、使用Handler更新ProgressBar

      4、Handler與線程;

      5、Bundle的用法;

      6、在新線程中處理消息的方法。

      九、SQLite使用方法

      1、SQLite介紹;

      2、SQLiteOpenHeper使用方法;

      3、使用adb訪問(wèn)SQLite

      4、增、刪、改、查。

      十、Android文件下載

      1、使用HTTP協(xié)議下載文件;

      2、將下載的文件寫入SDCARD。

      十一、Content Provider初步(2學(xué)時(shí))

      1、Content Provider的基本概念;

      2、Uri;

      3、Content Provider的實(shí)現(xiàn)方法。

      十二、XML文件的解析方法

      1、什么是SAX;

      2、SAX的基本原理;

      3、SAX常用接口;

      4、SAX解析。

      十三、廣播機(jī)制(2學(xué)時(shí))

      1、Android的廣播機(jī)制(圖鑒);

      2、BroadCastReceive的作用;

      3、BroadCastReceive的編寫方法;

      4、BroadCastReceive的生命周期。

      5、注冊(cè)BroadCastReceive的方法;

      6、Android內(nèi)置BroadCastReceive Actions。

      十四、WIFI網(wǎng)絡(luò)的使用

      1、什么是WIFI;

      2、獲取WIFI網(wǎng)卡的狀態(tài);

      3、操作WIFI所需要的權(quán)限;

      4、改變WIFI網(wǎng)卡的狀態(tài)。

      十五、Socket編程

      1、什么是Socket;

      2、Socket基本通信模型(見圖);

      3、使用基于TCP協(xié)議的Socket;

      4、使用基于UDP協(xié)議的Socket。

      十六、Service

      1、Service是什么;

      2、Service不是什么;

      3、Service的生命周期;

      4、啟動(dòng)和停止Service;

      第四篇:Android方案總結(jié)

      一、硬件描述

      如上圖,應(yīng)用程序的開發(fā)過(guò)程中我們使用了飛思卡爾的i.MX51 EVK Hardware。設(shè)備提供的支持如下:多標(biāo)準(zhǔn)音頻回放;多標(biāo)準(zhǔn)視頻回放;開放的系統(tǒng)支持;

      二、軟體結(jié)構(gòu)

      1、Android系統(tǒng)的初始化流程圖如下所示:

      BeginMkdir: /dev,/proc,/sys,/dev/pts,/dev/socketaction_for_each_trigger(“early-init”, action_add_queue_tail);property_set(ro.XXX)open_devnull_stdio():fd is 0,1,2device_initaction_for_each_trigger(“init”, action_add_queue_tail)log_init: /dev/__kmsg__property_initaction_for_each_trigger(“early-boot”, action_add_queue_tail);parse_config_file(“/init.rc”)Check have /dev/consoleaction_for_each_trigger(“boot”, action_add_queue_tail);import_kernel_cmdline: /proc/cmdlineload_565rle_image(INIT_IMAGE_FILE)queue_all_property_triggers()get_hardware_name: /proc/cpuinfoIf load okrestart_processes()Yparse_config_file(/init.%s.rc)Show Image, and Print “A N D R O I D”to ttyEnd

      可以具體描述如下:(1).初始化log系統(tǒng)。

      (2).解析/init.rc和/init.%hardware%.rc文件。

      (3).執(zhí)行 early-init action in the two files parsed in step 2。

      (4).設(shè)備初始化,例如:在 /dev 下面創(chuàng)建所有設(shè)備節(jié)點(diǎn),下載 firmwares。

      (5).初始化屬性服務(wù)器,Actually the property system is working as a share memory.Logically it looks like a registry under Windows system。

      (6).執(zhí)行 init action in the two files parsed in step 2。

      (7).開啟 屬性服務(wù)。

      (8).執(zhí)行 early-boot and boot actions in the two files parsed in step 2。

      (9).執(zhí)行 Execute property action in the two files parsed in step 2。

      (10).進(jìn)入一個(gè)無(wú)限循環(huán) to wait for device/property set/child process exit events。

      2、方案基本框架,如下圖所示:

      Native codeDaivik runtimeAndroidNDKappsJNIAndroidSDKappsAndroid app frameworkStandard librariesLinux kernel+Android extension

      (1)圖中Native Code包含一系列運(yùn)行與Linux內(nèi)核之上,由C/C++語(yǔ)言寫成的庫(kù),這些庫(kù)提供基本的系統(tǒng)級(jí)功能。其為應(yīng)用層提供了本地開發(fā)的可擴(kuò)展性,在此次開發(fā)過(guò)程中,Native Code主要為我們提供了音視頻的編解碼(即我們?cè)诖藢娱_發(fā)了我們自己的音視頻的編解碼)。系統(tǒng)中主要使用的是G711音頻編解碼,實(shí)現(xiàn)語(yǔ)音的本地錄音及播放;FFMPEG視頻解碼,進(jìn)行圖像視頻的解碼,實(shí)現(xiàn)視頻的實(shí)時(shí)播放。

      (2)Dalvik runtime的相關(guān)介紹。Android系統(tǒng)的應(yīng)用開發(fā)語(yǔ)言是Java,而保障這一點(diǎn)的就是Android runtime。Java語(yǔ)言的運(yùn)行需要有虛擬機(jī)的存在,而Android runtime 的核心就是一個(gè)稱之為Dalvik的虛擬機(jī)。另外,Android runtime還包含了一個(gè)強(qiáng)大的Java核心類庫(kù)。這個(gè)類庫(kù)從功能上涵蓋了傳統(tǒng)Java核心類庫(kù)的大多數(shù)功能。應(yīng)用程序調(diào)用Android 函數(shù)庫(kù)(即Android runtime中的Java核心類庫(kù))中的函數(shù)時(shí),其實(shí)只是調(diào)用的一個(gè)函數(shù)名,具體實(shí)現(xiàn)在Native Code中的Library中。即是Library為上層的應(yīng)用提供API供開發(fā)使用。(3)關(guān)于JNI。Java Native Interface(JNI)標(biāo)準(zhǔn),它允許Java代碼和其他語(yǔ)言寫的代碼進(jìn)行交互。JNI一開始是為了本地已編譯語(yǔ)言,尤其是C和C++而設(shè)計(jì)的,但是它并不妨礙你使用其他語(yǔ)言,只要調(diào)用約定受支持就可以了。我們開發(fā)的音視頻本地編解碼庫(kù),就是通過(guò)JNI來(lái)使用的。如下,private static native void InitEnv();private static native int drawFrame(Bitmap bitmap, byte[] inbuffer, int buf_len);這是我們?cè)诔绦蛑姓{(diào)用的本地函數(shù),先要使用關(guān)鍵字native進(jìn)行本地聲明。static { System.loadLibrary(“decode”);}

      這是用來(lái)加載我們的c動(dòng)態(tài)庫(kù)的,上面的native聲明中的方法就是在我們加載的庫(kù)中具體實(shí)現(xiàn)的。

      (4)Linux kernel 和Android extension部分。這一部分主要為我們提供了諸如硬件設(shè)備驅(qū)動(dòng)(如display driver、camera driver等)、進(jìn)程管理、內(nèi)存管理、電源管理等底層功能。這一層的Linux并不是標(biāo)準(zhǔn)的GNU/Linux,而是根據(jù)我們的商業(yè)需求進(jìn)行大量的定制。

      第五篇:Android面試總結(jié)

      1.activity的生命周期。

      activity主要生命周期的方法說(shuō)明:

      onCreate(Bundle savedInstanceState):創(chuàng)建activity時(shí)調(diào)用。設(shè)置在該方法中,還以Bundle的形式提供對(duì)以前儲(chǔ)存的任何狀態(tài)的訪問(wèn)!

      onStart():activity變?yōu)樵谄聊簧蠈?duì)用戶可見時(shí)調(diào)用。

      onResume():activity開始與用戶交互時(shí)調(diào)用(無(wú)論是啟動(dòng)還是重新啟動(dòng)一個(gè)活動(dòng),該方法總是被調(diào)用的)。

      onPause():activity被暫?;蚴栈豤pu和其他資源時(shí)調(diào)用,該方法用于保存活動(dòng)狀態(tài)的,也是保護(hù)現(xiàn)場(chǎng),壓棧吧!

      onStop():activity被停止并轉(zhuǎn)為不可見階段及后續(xù)的生命周期事件時(shí)調(diào)用。

      onRestart():重新啟動(dòng)activity時(shí)調(diào)用。該活動(dòng)仍在棧中,而不是啟動(dòng)新的活動(dòng)。

      onDestroy():activity被完全從系統(tǒng)內(nèi)存中移除時(shí)調(diào)用,該方法被

      2.橫豎屏切換時(shí)候activity的生命周期

      3.android中的動(dòng)畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么

      兩種,一種是Tween動(dòng)畫、還有一種是Frame動(dòng)畫。Tween動(dòng)畫,這種實(shí)現(xiàn)方式可以使視圖組件移動(dòng)、放大、縮小以及產(chǎn)生透明度的變化;另一種Frame動(dòng)畫,傳統(tǒng)的動(dòng)畫方法,通過(guò)順序的播放排列好的圖片來(lái)實(shí)現(xiàn),類似電影。

      {Android的animation由四種類型組成 XML中

      alpha 漸變透明度動(dòng)畫效果 scale漸變尺寸伸縮動(dòng)畫效果

      translate 畫面轉(zhuǎn)換位置移動(dòng)動(dòng)畫效果 rotate 畫面轉(zhuǎn)移旋轉(zhuǎn)動(dòng)畫效果

      JavaCode中

      AlphaAnimation ScaleAnimation 漸變透明度動(dòng)畫效果 漸變尺寸伸縮動(dòng)畫效果

      TranslateAnimation畫面轉(zhuǎn)換位置移動(dòng)動(dòng)畫效果 RotateAnimation 畫面轉(zhuǎn)移旋轉(zhuǎn)動(dòng)畫效果

      Android動(dòng)畫模式

      Animation主要有兩種動(dòng)畫模式: 一種是tweened animation(漸變動(dòng)畫)XML中 JavaCode alpha AlphaAnimation scaleScaleAnimation

      一種是frame by frame(畫面轉(zhuǎn)換動(dòng)畫)XML中 JavaCode translate TranslateAnimation rotate RotateAnimation

      }

      4.handler機(jī)制的原理:

      andriod提供了 Handler 和 Looper 來(lái)滿足線程間的通信。Handler 先進(jìn)先出原則。Looper類用來(lái)管理特定線程內(nèi)對(duì)象之間的消息交換(Message Exchange)。

      1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè)Looper對(duì)象,由它來(lái)管理此線程里的Message Queue(消息隊(duì)列)。

      2)Handler: 你可以構(gòu)造Handler對(duì)象來(lái)與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來(lái)的消息。

      3)Message Queue(消息隊(duì)列):用來(lái)存放線程放入的消息。

      4)線程:UI thread 通常就是main thread,而Android啟動(dòng)程序時(shí)會(huì)替它建立一個(gè)Message Queue

      5.說(shuō)說(shuō)activity,intent,service是什么關(guān)系

      [教程] 新手入門之應(yīng)用解析(Activity、Intent、Service等)

      Activity, Intent, Service, IntentReceiver, ContentProvider 一般剛開始學(xué)Android時(shí)對(duì)這些基本的東西還是要明確一下的,下面的東西摘自新版android開發(fā)教程里面的,介紹比較簡(jiǎn)單,希望能夠有幫助。

      一、Activity

      Activity是android中最今本的應(yīng)用程序組件,應(yīng)用程序中,一個(gè)Activity通常是一個(gè)單獨(dú)的屏幕,每一個(gè)Activity都被實(shí)現(xiàn)為一個(gè)單獨(dú)的類,這些類都是從Activity基類中繼承來(lái)的,Activity類會(huì)顯示由視圖控件組成的用戶接口,并對(duì)視圖控件的事件做出響應(yīng)。一個(gè)復(fù)雜的應(yīng)用是由多個(gè)屏幕顯示組成。這里每一個(gè)屏幕的顯示就是一個(gè)Activity,從一個(gè)屏幕的顯示到另一個(gè)新屏幕的顯示并完成相關(guān)的事件是很容易實(shí)現(xiàn)的,這些屏幕Activity是相互交互的,他們直接通信從而完成相應(yīng)的功能。當(dāng)一個(gè)新的屏幕打開時(shí),前一個(gè)屏幕將會(huì)暫停,并保存在歷史堆棧中,用戶可以從歷史堆棧中返回前一個(gè)屏幕。當(dāng)屏幕不再使用時(shí),我們可以從歷史堆棧中刪除它,默認(rèn)情況下,Android會(huì)保留從主屏幕到每一個(gè)應(yīng)用的運(yùn)行屏幕。Activity代表一個(gè)用戶所能看到的屏幕,Activity主要是處理一個(gè)應(yīng)用的整體性工作,如監(jiān)聽系統(tǒng)事件(按鍵、觸摸屏幕等)、為用戶顯示指定的View、啟動(dòng)其他Activity等,其他的Activity繼承Activity基類后,通過(guò)重寫父類的方法來(lái)實(shí)現(xiàn)各種功能。

      二、Intent

      Android專有類Intent的調(diào)用是用來(lái)進(jìn)行架構(gòu)屏幕之間的切換的。Intent是描述應(yīng)用想要做什么。Intent數(shù)據(jù)結(jié)構(gòu)中兩個(gè)最重要的部分是動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù),典型的動(dòng)作類型有:Main(活動(dòng)的門戶)、View、Pick、Edit等,而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)是應(yīng)URI的形式進(jìn)行表示的,這里的URI就相當(dāng)于這些動(dòng)作的ID,一個(gè)動(dòng)作對(duì)應(yīng)一個(gè)動(dòng)作數(shù)據(jù)。Android使用了Intent這個(gè)特殊類,實(shí)現(xiàn)在屏幕與屏幕之間的移動(dòng)。Intent類用用來(lái)描述一個(gè)應(yīng)用將會(huì)做什么事情。與之有關(guān)系的一個(gè)類叫IntentFilter類,相對(duì)于intent是一個(gè)有效的做事情的請(qǐng)求,一個(gè)IntentFilter則用于描述一個(gè)Activity(或者IntentReceiver)能夠操作那些intent。一個(gè)Activity如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要事先聲明一個(gè)IntentFilter,這個(gè)IntentFilter要知道怎么去處理View動(dòng)作和表示一個(gè)人的URI,IntentFilter需要AndroidManifest.xml中 定義,如AndroidManifest.xml中的:

      。

      通過(guò)解析各種intent,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕是很簡(jiǎn)單的。當(dāng)向前導(dǎo)航時(shí),activity 將會(huì)調(diào)用startActivity(IntentmyIntent)方法。然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter 中查找,找到最匹配myIntent 的Intent 對(duì)應(yīng)的activity。新的activity 接收到myIntent 的通知后,開始運(yùn)行。當(dāng)startActivity 方法被調(diào)用將觸發(fā)解析myIntent 的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵好處:

      A、Activities 能夠重復(fù)利用從其它組件中以Intent 的形式產(chǎn)生的一個(gè)請(qǐng)求;

      B、Activities 可以在任何時(shí)候被一個(gè)具有相同IntentFilter 的新的Activity 取代。

      三、IntentReceiver

      當(dāng)你希望你的應(yīng)用能夠?qū)σ粋€(gè)外部的事件(如當(dāng)電話呼入時(shí),或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí),或者到了晚上時(shí))做出響應(yīng),你可以使用一個(gè)IntentReceiver。雖然IntentReceiver 在感興趣的事件發(fā)生時(shí),會(huì)使用NotificationManage通知用戶,但它并不能生成一個(gè)UI。IntentReceiver 在AndroidManifest.xml 中注冊(cè),但也可以在代碼中使用Context.registerReceiver()進(jìn)行注冊(cè)。當(dāng)一個(gè)intentreceiver 被觸發(fā)時(shí),你的應(yīng)用不必對(duì)請(qǐng)求調(diào)用intentreceiver,系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)你的應(yīng)用。各種應(yīng)用還可以通過(guò)使用Context.broadcastIntent()將它們自己的intentreceiver 廣播給其它應(yīng)用程序。

      四、Service

      一個(gè)Service 是一段長(zhǎng)生命周期的,沒有用戶界面的程序。比較好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。在一個(gè)媒體播放器的應(yīng)用中,應(yīng)該會(huì)有多個(gè)activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂(lè)重放這個(gè)功能并沒有對(duì)應(yīng)的activity,因?yàn)槭褂谜弋?dāng)然會(huì)認(rèn)為在導(dǎo)航到其它屏幕時(shí)音樂(lè)應(yīng)該還在播放的。在這個(gè)例子中,媒體播放器這個(gè)activity 會(huì)使用Context.startService()來(lái)啟動(dòng)一個(gè)service,從而可以在后臺(tái)保持音樂(lè)的播放。同時(shí),系統(tǒng)也將保持這個(gè)service 一直執(zhí)行,直到這個(gè)service 運(yùn)行結(jié)束。另外,我們還可以通過(guò)使用Context.bindService()方法,連接到一個(gè)service 上(如果這個(gè)service 還沒有運(yùn)行將啟動(dòng)它)。當(dāng)連接到一個(gè)service 之后,我們還可以service 提供的接口與它進(jìn)行通訊。拿媒體播放器這個(gè)例子來(lái)說(shuō),我們還可以進(jìn)行暫停、重播等操作。

      五、Content Provider

      Android 應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQLite 數(shù)據(jù)庫(kù)中,甚至是任何有效的設(shè)備中。當(dāng)你想將你的應(yīng)用數(shù)據(jù)與其它的應(yīng)用共享時(shí),內(nèi)容提供器就可以發(fā)揮作用了。因?yàn)閮?nèi)容提供器類實(shí)現(xiàn)了一組標(biāo)準(zhǔn)的方法,從而能夠讓其它的應(yīng)用保存或讀取此內(nèi)容提供器處理的各種數(shù)據(jù)類型。數(shù)據(jù)是應(yīng)用的核心。在Android 中,默認(rèn)使用鼎鼎大名的SQLite 作為系統(tǒng)DB。但是在Android 中,使用方法有點(diǎn)小小的不一樣。在Android 中每一個(gè)應(yīng)用都運(yùn)行在各自的進(jìn)程中,當(dāng)你的應(yīng)用需要訪問(wèn)其他應(yīng)用的數(shù)據(jù)時(shí),也就需要數(shù)據(jù)在不同的虛擬機(jī)之間傳遞,這樣的情況操作起來(lái)可能有些困難(正常情況下,你不能讀取其他的應(yīng)用的db 文件),ContentProvider 正是用來(lái)解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具。

      1、所有被一個(gè)Android 應(yīng)用程序創(chuàng)建的偏好設(shè)置,文件和數(shù)據(jù)庫(kù)都是私有的。

      6.android中線程與線程,進(jìn)程與進(jìn)程之間如何通信

      1、一個(gè) Android 程序開始運(yùn)行時(shí),會(huì)單獨(dú)啟動(dòng)一個(gè)Process。

      默認(rèn)情況下,所有這個(gè)程序中的Activity或者Service都會(huì)跑在這個(gè)Process。

      默認(rèn)情況下,一個(gè)Android程序也只有一個(gè)Process,但一個(gè)Process下卻可以有許多個(gè)

      Thread。

      2、一個(gè) Android 程序開始運(yùn)行時(shí),就有一個(gè)主線程Main Thread被創(chuàng)建。該線程主要負(fù)責(zé)UI界面的顯示、更新和控件交互,所以又叫UI Thread。

      一個(gè)Android程序創(chuàng)建之初,一個(gè)Process呈現(xiàn)的是單線程模型--即Main Thread,所有的任務(wù)都在一個(gè)線程中運(yùn)行。所以,Main Thread所調(diào)用的每一個(gè)函數(shù),其耗時(shí)應(yīng)該越短越好。而對(duì)于比較費(fèi)時(shí)的工作,應(yīng)該設(shè)法交給子線程去做,以避免阻塞主線程(主線程被阻塞,會(huì)導(dǎo)致程序假死現(xiàn)象)。

      3、Android單線程模型:Android UI操作并不是線程安全的并且這些操作必須在UI線程中執(zhí)行。如果在子線程中直接修改UI,會(huì)導(dǎo)致異常。

      Android中Handler、Thread(HanlderThread)、Runnable之間的關(guān)系

      首先說(shuō)明Android的CPU分配的最小單元是線程,Handler一般是在某個(gè)線程里創(chuàng)建的,因而Handler和Thread就是相互綁定的,一一對(duì)應(yīng)。而Runnable是一個(gè)接口,Thread是Runnable的子類。所以說(shuō),他倆都算一個(gè)進(jìn)程。HandlerThread顧名思義就是可以處理消息循環(huán)的線程,他是一個(gè)擁有Looper的線程,可以處理消息循環(huán)。與其說(shuō)Handler和一個(gè)線程綁定,不如說(shuō)Handler是和Looper一一對(duì)應(yīng)的。最后需要說(shuō)明的是,在UI線程(主線程)中: mHandler=new Handler();mHandler.post(new Runnable(){ void run(){ //執(zhí)行代碼...} });這個(gè)線程其實(shí)是在UI線程之內(nèi)運(yùn)行的,并沒有新建線程。

      常見的新建線程的方法是: Thread thread = new Thread();thread.start();HandlerThread thread = new HandlerThread(“string”);thread.start();

      7.widget相對(duì)位置的完成在antivity的哪個(gè)生命周期階段實(shí)現(xiàn)

      onStart

      8.說(shuō)說(shuō)mvc模式的原理,它在android中的運(yùn)用 : MVC(Model_view_contraller)”模型_視圖_控制器”。MVC 應(yīng)用程序總是由這三個(gè)部分組成。Event(事件)導(dǎo)致 Controller改變 Model 或View,或者同時(shí)改變兩者。只要 Controller改變了 Models 的數(shù)據(jù)或者屬性,所有依賴的 View 都會(huì)自動(dòng)更新。類似的,只要 Controller改變了 View,View會(huì)從潛在的 Model 中獲取數(shù)據(jù)來(lái)刷新自己。

      9.說(shuō)說(shuō)在android中有哪幾種數(shù)據(jù)存儲(chǔ)方式

      在Android中,可供選擇的存儲(chǔ)方式有SharedPreferences、文件存儲(chǔ)、SQLite數(shù)據(jù)庫(kù)方式、內(nèi)容提供器(Content provider)和網(wǎng)絡(luò)

      10.android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區(qū)別

      DOM、SAX(Simple API for XML)、XmlPullParser

      11.listview你是怎么優(yōu)化的。

      Adapter的作用就是ListView界面與數(shù)據(jù)之間的橋梁,當(dāng)列表里的每一項(xiàng)顯示到頁(yè)面時(shí),都會(huì)調(diào)用Adapter的getView方法返回一個(gè)View。想過(guò)沒有? 在我們的列表有1000000項(xiàng)時(shí)會(huì)是什么樣的?是不是會(huì)占用極大的系統(tǒng)資源?

      先看看下面的代碼:

      public View getView(int position, View convertView, ViewGroup parent){

      View item = mInflater.inflate(R.layout.list_item_icon_text, null);

      ((TextView)item.findViewById(R.id.text)).setText(DATA[position]);

      ((ImageView)item.findViewById(R.id.icon)).setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);

      return item;

      }

      怎么樣?如果超過(guò)1000000項(xiàng)時(shí),后果不堪設(shè)想!您可千萬(wàn)別這么寫!

      我們?cè)賮?lái)看看下面的代碼:

      public View getView(int position, View convertView, ViewGroup parent){

      if(convertView == null){

      convertView = mInflater.inflate(R.layout.item, null);

      }

      ((TextView)convertView.findViewById(R.id.text)).setText(DATA[position]);

      ((ImageView)convertView.findViewById(R.id.icon)).setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);

      return convertView;

      }

      怎么樣,上面的代碼是不是好了很多?系統(tǒng)將會(huì)減少創(chuàng)建很多View。性能得到了很大的提升。

      還有沒有優(yōu)化的方法呢? 答案是肯定的:

      public View getView(int position, View convertView, ViewGroup parent){

      ViewHolder holder;

      if(convertView == null){

      convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

      holder = new ViewHolder();

      holder.text =(TextView)convertView.findViewById(R.id.text);

      holder.icon =(ImageView)convertView.findViewById(R.id.icon);

      convertView.setTag(holder);

      } else {

      holder =(ViewHolder)convertView.getTag();

      }

      holder.text.setText(DATA[position]);

      holder.icon.setImageBitmap((position & 1)== 1 ? mIcon1 : mIcon2);

      return convertView;

      }

      static class ViewHolder {

      TextView text;

      ImageView icon;

      }

      怎么樣?會(huì)不會(huì)又給您的系統(tǒng)帶來(lái)很大的提升呢?看看下面三種方式的性能對(duì)比圖您就知道了!

      12.view的刷新

      Android中對(duì)View的更新有很多種方式,使用時(shí)要區(qū)分不同的應(yīng)用場(chǎng)合。我感覺最要緊的是分清:多線程和雙緩沖的使用情況。

      1.不使用多線程和雙緩沖

      這種情況最簡(jiǎn)單了,一般只是希望在View發(fā)生改變時(shí)對(duì)UI進(jìn)行重繪。你只需在Activity中顯式地調(diào)用View對(duì)象中的invalidate()方法即可。系統(tǒng)會(huì)自動(dòng)調(diào)用 View的onDraw()方法。

      2.使用多線程和不使用雙緩沖

      這種情況需要開啟新的線程,新開的線程就不好訪問(wèn)View對(duì)象了。強(qiáng)行訪問(wèn)的話會(huì)報(bào):android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.這時(shí)候你需要?jiǎng)?chuàng)建一個(gè)繼承了android.os.Handler的子類,并重寫handleMessage(Message msg)方法。android.os.Handler是能發(fā)送和處理消息的,你需要在Activity中發(fā)出更新UI的消息,然后再你的Handler(可以使用匿名內(nèi)部類)中處理消息(因?yàn)槟涿麅?nèi)部類可以訪問(wèn)父類變量,你可以直接調(diào)用View對(duì)象中的invalidate()方法)。也就是說(shuō):在新線程創(chuàng)建并

      發(fā)送一個(gè)Message,然后再主線程中捕獲、處理該消息。

      3.使用多線程和雙緩沖

      Android中SurfaceView是View的子類,她同時(shí)也實(shí)現(xiàn)了雙緩沖。你可以定義一個(gè)她的子類并實(shí)現(xiàn)SurfaceHolder.Callback接口。由于實(shí)現(xiàn)SurfaceHolder.Callback接口,新線程就不需要android.os.Handler幫忙了。SurfaceHolder中l(wèi)ockCanvas()方法可以鎖定畫布,繪制玩新的圖像后調(diào)用unlockCanvasAndPost(canvas)解鎖(顯示),還是比較方便得。

      13.IPC及原理

      什么是Android操作系統(tǒng),所謂的Android:是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),早期由Google開發(fā),后由開放手機(jī)聯(lián)盟Open Handset Alliance)開發(fā)。

      Linux系統(tǒng)中進(jìn)程間通信的方式有:socket, named pipe,message queque, signal,share memory。Java系統(tǒng)中的進(jìn)程間通信方式有socket, named pipe等。android應(yīng)用程序理所當(dāng)然可以應(yīng)用JAVA的IPC

      機(jī)制實(shí)現(xiàn)進(jìn)程間的通信,取而代之的是Binder通信。Google為什么要采用這種方式呢,這取決于Binder通信方式的高效率。Binder通信是通過(guò)linux的binder driver來(lái)實(shí)現(xiàn)的。Binder通信操作類似線程遷移(thread migration),兩個(gè)進(jìn)程間IPC看起來(lái)就象是一個(gè)進(jìn)程進(jìn)入另一個(gè)進(jìn)程執(zhí)行代碼然后帶著執(zhí)行的結(jié)果返回。Binder的用戶空間為每一個(gè)進(jìn)程維護(hù)著一個(gè)可用的線程池,線程池用于處理到來(lái)的IPC以及執(zhí)行進(jìn)程本地消息,Binder通信是同步而不是異步。Android中的Binder通信是基于Service與Client的,所有需要IBinder通信的進(jìn)程都必須創(chuàng)建一個(gè)IBinder接口。

      系統(tǒng)中有一個(gè)進(jìn)程管理所有的system service,Android虛擬機(jī)不允許用戶添加非授權(quán)的System service,當(dāng)然現(xiàn)在源碼開發(fā)了,我們可以修改一些代碼來(lái)實(shí)現(xiàn)添加底層system Service的目的。

      對(duì)用戶程序來(lái)說(shuō),我們也要?jiǎng)?chuàng)建server,或者Service用于進(jìn)程間通信,這里有一ActivityManagerService管理JAVA應(yīng)用層所有的service創(chuàng)建與連接(connect)。disconnect,所有的 Activity也是通過(guò)這個(gè)service來(lái)啟動(dòng),加載的。ActivityManagerService也是加載在Systems Servcie中的。

      Android虛擬機(jī)啟動(dòng)之前系統(tǒng)會(huì)先啟動(dòng)service Manager進(jìn)程,service Manager打開binder驅(qū)動(dòng),并通知binder kernel驅(qū)動(dòng)程序這個(gè)進(jìn)程將作為System Service Manager。然后該進(jìn)程將進(jìn)入一個(gè)循環(huán),等待處理來(lái)自其他進(jìn)程的數(shù)據(jù)。用戶創(chuàng)建一個(gè)System service后,通過(guò)defaultServiceManager得到一個(gè)

      遠(yuǎn)程ServiceManager的接口。

      通過(guò)這個(gè)接口我們可以調(diào)用 addService函數(shù)將System service添加到Service Manager進(jìn)程中,然后client可以通過(guò)getService獲取到需要連接的目的Service的IBinder對(duì)象。這個(gè)IBinder是 Service的BBinder在binder kernel的一個(gè)參考,所以service IBinder 在binder kernel中不會(huì)存在相同的兩個(gè)

      IBinder對(duì)象。

      每一個(gè)Client進(jìn)程同樣需要打開Binder驅(qū)動(dòng)程序。對(duì)用戶程序而言,我們獲得這個(gè)對(duì)象就可以通過(guò)binder kernel訪問(wèn)service對(duì)象中的方法。Client與Service在不同的進(jìn)程中,通過(guò)這種方式實(shí)現(xiàn)了類似線程間的遷移的通信方式,對(duì)用戶程序而言當(dāng)調(diào)用Service返回的IBinder接口后,訪問(wèn)Service中的方法就

      如同調(diào)用自己的函數(shù)。實(shí)現(xiàn)接口時(shí)有幾個(gè)原則:

      拋出的異常不要返回給調(diào)用者.跨進(jìn)程拋異常處理是不可取的。IPC調(diào)用是同步的。如果你知道一個(gè)IPC服務(wù)需要超過(guò)幾毫秒的時(shí)間才能完成地話,你應(yīng)該避免在Activity的主線程中調(diào)用。

      也就是IPC調(diào)用會(huì)掛起應(yīng)用程序?qū)е陆缑媸ロ憫?yīng).這種情況應(yīng)該考慮單起一個(gè)線程來(lái)處理,能在AIDL接口中聲明靜態(tài)屬性。IPC的調(diào)用步驟:

      1.聲明一個(gè)接口類型的變量,該接口類型在.aidl文件中定義。

      2.實(shí)現(xiàn)ServiceConnection。

      3.調(diào)用ApplicationContext.bindService(),并在ServiceConnection實(shí)現(xiàn)中進(jìn)行傳遞.4.在ServiceConnection.onServiceConnected()實(shí)現(xiàn)中,你會(huì)接收一個(gè)IBinder實(shí)例(被調(diào)用的Service).調(diào)用 YourInterfaceName.Stub.asInterface((IBinder)service)將參數(shù)轉(zhuǎn)換YourInterface類型。

      5.調(diào)用接口中定義的方法。你總要檢測(cè)到DeadObjectException異常,該異常在連接斷開時(shí)被拋

      出。它只會(huì)被遠(yuǎn)程方法拋出。

      6.斷開連接,調(diào)用接口實(shí)例中的ApplicationContext.unbindService()

      14.Android多線程

      在Android下面也有多線程的概念,在C/C++中,子線程可以是一個(gè)函數(shù),一般都是一個(gè)帶有循環(huán)的函數(shù),來(lái)處理某些數(shù)據(jù),優(yōu)先線程只是一個(gè)復(fù)雜的運(yùn)算過(guò)程,所以可能不需要while循環(huán),運(yùn)算完成,函數(shù)結(jié)束,線程就銷毀。對(duì)于那些需要控制的線程,一般我們都是和互斥鎖相互關(guān)聯(lián),從而來(lái)控制線程的進(jìn)度,一般我們創(chuàng)建子線程,一種線程是很常見的,那就是帶有消息循環(huán)的線程。

      消息循環(huán)是一個(gè)很有用的線程方式,曾經(jīng)自己用C在Linux下面實(shí)現(xiàn)一個(gè)消息循環(huán)的機(jī)制,往消息隊(duì)列里添加數(shù)據(jù),然后異步的等待消息的返回。當(dāng)消息隊(duì)列為空的時(shí)候就會(huì)掛起線程,等待新的消息的加入。這是一個(gè)很通用的機(jī)制。在Android,這里的線程分為有消息循環(huán)的線程和沒有消息循環(huán)的線程,有消息循環(huán)的線程一般都會(huì)有一個(gè)Looper,這個(gè)事android的新概念。我們的主線程(UI線程)就是一個(gè)消息循環(huán)的線程。針對(duì)這種消息循環(huán)的機(jī)制,我們引入一個(gè)新的機(jī)制Handle,我們有消息循環(huán),就要往消息循環(huán)里面發(fā)送相應(yīng)的消息,自定義消息一般都會(huì)有自己對(duì)應(yīng)的處理,消息的發(fā)送和清除,消息的的處理,把這些都封裝在Handle里面,注意Handle只是針對(duì)那些有Looper的線程,不管是UI線程還是子線程,只要你有Looper,我就可以往你的消息隊(duì)列里面添加?xùn)|西,并做相應(yīng)的處理。

      但是這里還有一點(diǎn),就是只要是關(guān)于UI相關(guān)的東西,就不能放在子線程中,因?yàn)樽泳€程是不能操作UI的,只能進(jìn)行數(shù)據(jù)、系統(tǒng)等其他非UI的操作。

      15.Android為什么要設(shè)計(jì)4大組件,他們之間的聯(lián)系,不設(shè)計(jì)行不行(主要是為了實(shí)現(xiàn)MVC模式,然而java中最難的模式也是這個(gè),很少有產(chǎn)品能將這個(gè)模式做得很好【Technicolor 的面試官問(wèn)的這個(gè)】

      16,service的周期,activity的周期,談下你對(duì)Android內(nèi)部應(yīng)用的了解,比如他做電話,以及聯(lián)系人等等應(yīng)用??蚣軐佑泻芏鄸|西還是多看看,熟悉Android怎么做的,不管你做應(yīng)用程開發(fā)還是應(yīng)用框架層開發(fā)很有好處的。在就是你項(xiàng)目經(jīng)驗(yàn),突出你遇到什么難點(diǎn),然后是怎么解決的!盡量將每個(gè)技術(shù)點(diǎn)凸顯出來(lái),當(dāng)然面試官有時(shí)候會(huì)為了體現(xiàn)你是否真正做過(guò),他會(huì)問(wèn)你,你在這個(gè)應(yīng)用中做那個(gè)模塊,用了多少個(gè)類之類的問(wèn)題。偶爾有的面試官會(huì)問(wèn)你,你用過(guò)Android自帶的單元測(cè)試了沒,怎么用的?當(dāng)然我面試過(guò)很多家單位,有 的是做平板,手機(jī),數(shù)字電視,有的是做出個(gè)erp之類的客戶端等等,出于前面的三個(gè),基本上都是將Android的全部改掉,如果真正要做Android的話,大家要學(xué)的還很多。總之,一句話,什么樣的面試官都有,去面試的時(shí)候要做好一切心理準(zhǔn)備,不管是技術(shù)還是基礎(chǔ)都得扎實(shí)。一個(gè)人的交談能力也很重要,總之不是非常標(biāo)準(zhǔn)的普通話,最起碼你說(shuō)的得讓別人聽得懂,而且得把面試官講得非常徹底,這樣你獲得offer的機(jī)會(huì)更大,談工資也有優(yōu)勢(shì)~~當(dāng)然曾經(jīng)一家公司的面試官跟我說(shuō)過(guò),技術(shù)是不惜錢的,只要你有能力,多少錢他都請(qǐng)。_ 確實(shí),來(lái)北京求職期間,牛人真的很多,而且有的面試官也非常好,給了很多忠肯的意見。并不是每個(gè)面試官都特想為難你的~最主要的還是想知道你的技術(shù),因?yàn)樗麄円彩浅怨撅垼脼檫@個(gè)負(fù)責(zé)。

      Basic:

      1.基本的UI控件和布局文件

      2.UI配套的Adapter的使用

      3.Activity, Intent,Service,broadCast Receiver他們的生命周期管理熟悉一下

      4.操作手機(jī)上的數(shù)據(jù)庫(kù)SQLite應(yīng)用

      17.為什么看好 Android

      對(duì)于開發(fā)人員來(lái)講:上手容易,入門簡(jiǎn)單,api齊全,適應(yīng)性強(qiáng) 對(duì)于用戶來(lái)講:軟件豐富,系統(tǒng)穩(wěn)定,功能齊全 對(duì)于開發(fā)商來(lái)講:可定制性高,開發(fā)成本低,免費(fèi)。

      18.現(xiàn)在在公司做哪些工作(關(guān)于 Android)錯(cuò)

      手機(jī)軟件開發(fā)一般是分平臺(tái)的,目前比較火的是iPhone和Android手機(jī)平臺(tái)上的軟件開發(fā)。

      一般大學(xué)計(jì)算機(jī)畢業(yè),都會(huì)學(xué)過(guò)相應(yīng)的編程語(yǔ)言,比如C或C++,有這兩種語(yǔ)言做為基礎(chǔ),相信你可以快速去掌握其他的編程語(yǔ)言。

      如果你想從事iPhone平臺(tái)上的開發(fā)就要去學(xué)習(xí)Obj-C語(yǔ)言,想從事Android平臺(tái)上的就學(xué)習(xí)Java語(yǔ)言,除了掌握語(yǔ)言以后,還有的就是不同平臺(tái)上的開發(fā)工具。

      如果你想從事手機(jī)軟件開發(fā)方面的工作的話,我建議你可以選擇一家專業(yè)的移動(dòng)互聯(lián)網(wǎng)開發(fā)培訓(xùn)學(xué)校,參加專業(yè)的培訓(xùn)能幫助你更系統(tǒng)更扎實(shí)的掌握目前最先進(jìn)的技術(shù)

      19.Android 的框架以及一些基礎(chǔ)知識(shí)

      20.Android 一些方面的領(lǐng)悟(如Android框架的 IoC特性,View System 的狀態(tài)機(jī)機(jī)制等)

      21.對(duì)多線程的運(yùn)用和理解,及多線程之間handle的傳值。

      22.對(duì)android 虛擬機(jī)的理解,包括內(nèi)存管理機(jī)制垃圾回收機(jī)制。

      23.framework工作方式及原理,Activity是如何生成一個(gè)view的,機(jī)制是什么。

      24.android本身的一些限制,不如apk包大小限制,讀取大文件時(shí)的時(shí)間限制。

      25.Linux中跨進(jìn)程通信的集中方式

      1.socket;

      2.name pipe命名管道; 3.message queue消息隊(duì)列; 4.singal信號(hào)量;

      5.share memory共享內(nèi)存;

      26.dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念

      DVM指dalivk的虛擬機(jī)。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念。

      27.sim卡的EF 文件有何作用

      sim卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機(jī)通訊,sim本 身可以有自己的操作系統(tǒng),EF就是作存儲(chǔ)并和手機(jī)通訊用的

      28.AT命令的User case的概念

      1、Use Case的作用:

      我個(gè)人認(rèn)為Use Case僅僅用來(lái)反映用戶需求,并且在對(duì)象分析過(guò)程中,能夠起到一個(gè)查漏補(bǔ)缺的作用。但是使用“先確定Use Case,再指認(rèn)對(duì)象”實(shí)在是一種愚蠢的方法(恕我直言)。我個(gè)人認(rèn)為,指認(rèn)對(duì)象使用Yourdon在《Objuect Oriented Analysis》中提到的使用CheckList的方法在實(shí)踐中是比較實(shí)用的。我近來(lái)讀到的幾本書,也印證了我的想法。就我我個(gè)人在實(shí)踐中的經(jīng)驗(yàn),使用“首先確定Use Case”策略,非常容易導(dǎo)致分析員滑入“功能分解”的泥沼。而且從Use Case來(lái)導(dǎo)出對(duì)象將導(dǎo)致拙劣的分析模型。

      2、Use Case之間的關(guān)系:

      UML 1.3中,Use Case之間的關(guān)系只有3種,Generalization,Include和Extend,國(guó)內(nèi)出版的關(guān)于UML的中文書有兩本,一本是《UML從入門到精通》(其實(shí)應(yīng)該叫做Rose入門),一本是北航的《面向?qū)ο蟮目梢暬<夹g(shù)》,后一本書在這個(gè)方面起到了很壞的作用(前一本書我沒有怎么看,大概也好不到哪里去),一是使用了比較老的UML標(biāo)準(zhǔn),比如使用了Use關(guān)系,而且對(duì)于Extend和Generalization關(guān)系的描述也很混亂,很多人受到了誤導(dǎo)(尤其是Extend關(guān)系)。我建議有條件的網(wǎng)友盡量去看英文原版的著作,比如“UML三劍客”的《Unified Modeling Language User Guide》或者直接去讀UML1.3的規(guī)范。(而且Use Case之間的關(guān)系是用虛線+箭頭表示的,直到Rose 2000對(duì)此都沒有支持)

      3、Actor和Use Case之間的關(guān)系:

      在UML 1.3之中,Actor和Use Case之間的關(guān)系應(yīng)該是沒有箭頭的。雖然規(guī)范中并沒有明確禁止使用箭頭,但是從字句中隱含的意義來(lái)看,應(yīng)該是沒有箭頭的,而且規(guī)范中給出的示例是沒有箭頭的。我認(rèn)識(shí)的很多人,想當(dāng)然的認(rèn)為Actor和Use Case之間的關(guān)系上的箭頭標(biāo)示信息流向或者主/被動(dòng)關(guān)系,其實(shí)這個(gè)關(guān)系僅僅表示某個(gè)Actor參與了某個(gè)Use Case。

      29﹑Android 手機(jī)操作系統(tǒng)的四層架構(gòu)?

      架構(gòu)框架以此從上到下:

      1.Applications

      (應(yīng)用程序(應(yīng)用層));

      Android 會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括 email 客戶端,SMS 短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用 JAVA 語(yǔ) 言編寫的。

      2.Application FrameWork

      (應(yīng)用程序擴(kuò)展層(框架));

      由于 Android 的手機(jī)操作系統(tǒng)是,基于 Liunx 2.6 系統(tǒng)之上封裝而成。所以開發(fā)人員可也以直接訪問(wèn)核心程序所使用的API框架,該核心應(yīng)用程序的API框架設(shè)計(jì)簡(jiǎn)化了組件的重用,任何一個(gè)核心應(yīng)用程序(模塊)都暴露出它的功能作用,并且其他應(yīng)用程序也都可以使用該核心應(yīng)用程序(模塊)的功能(不過(guò)的遵守該核心應(yīng)用程序框架的安全性限制)。同樣,該應(yīng)用程序的重用機(jī)制也使用戶方便使用應(yīng)程序的相關(guān)組件。API 框架隱藏的核心應(yīng)用程序是一系列的應(yīng)用程序的服務(wù)和系統(tǒng)應(yīng)用,其中包括如下:

      (Android 手機(jī)中的 View 是最基本的一個(gè) UI 類)豐富而又可擴(kuò)展的視圖(手機(jī)界面所顯示的組件(Activity上所顯示的))組件,可以用來(lái)構(gòu)建應(yīng)用程序

      如:(視圖)Views, 網(wǎng)格(grids), 文本框(text boxes), 按鈕(button), 放置圖片區(qū)(imageview),文本編輯區(qū)

      (edittext), 文本顯示區(qū)(textview),3.Android RunTime Libraries

      (Android 系統(tǒng)運(yùn)行庫(kù));

      4.Liunx Kernel

      (Android 系統(tǒng)最底層核心系統(tǒng) Liunx)

      Android 的核心系統(tǒng)服務(wù)依賴于 Liunx 2.6 內(nèi)核,如系統(tǒng)安全,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Liunx 內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。

      30、Android dvm的進(jìn)程和 Linux 的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念

      DVM 指 dalivk 的虛擬機(jī)。每一個(gè) Android 應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的 Dalvik 虛擬機(jī)實(shí)例。而每一個(gè) DVM 都是在 Linux 中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念。

      31、sim卡的 EF 文件有何作用

      sim 卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機(jī)通訊,sim 本身可以有自己的操作 系統(tǒng),EF就是作存儲(chǔ)并和手機(jī)通訊用的

      32、嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性

      頁(yè)式,段式,段頁(yè),用到了 MMU,虛擬空間等技術(shù)

      33.什么是嵌入式實(shí)時(shí)操作系統(tǒng), Android 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎?

      嵌入式實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以 處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來(lái)控制生產(chǎn)過(guò)程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并 控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時(shí)間有苛刻的要求,這就需要使用實(shí)時(shí)系統(tǒng)。又可分為軟實(shí)時(shí)和硬實(shí)時(shí)兩種,而 android 是基于 linux 內(nèi)核的,因此屬于軟實(shí)時(shí)。

      34、一條最長(zhǎng)的短信息約占多少 byte?

      中文 70(包括標(biāo)點(diǎn)),英文 160,160 個(gè)字節(jié)

      1.2.3.4.5.6.7.8.9.10.11.12.13.14.什么是Activity?

      請(qǐng)描述一下Activity生命周期。

      兩個(gè)Activity之間跳轉(zhuǎn)時(shí)必然會(huì)執(zhí)行的是哪幾個(gè)方法。

      橫豎屏切換時(shí)候Activity的生命周期。

      如何將一個(gè)Activity設(shè)置成窗口的樣式。

      你后臺(tái)的Activity被系統(tǒng) 回收怎么辦?

      如何退出Activity?如何安全退出已調(diào)用多個(gè)Activity的Application?

      如果后臺(tái)的Activity由于某原因被系統(tǒng)回收了,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?

      兩個(gè)Activity之間怎么傳遞數(shù)據(jù)?

      怎么讓在啟動(dòng)一個(gè)Activity是就啟動(dòng)一個(gè)service?

      同一個(gè)程序,但不同的Activity是否可以放在不同的Task任務(wù)棧中?

      Activity怎么和service綁定,怎么在activity中啟動(dòng)自己對(duì)應(yīng)的service? 什么是Service以及描述下它的生命周期。

      Service有哪些啟動(dòng)方法,有什么區(qū)別,怎樣停用Service?

      15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.不用service,B頁(yè)面為音樂(lè)播放,從A跳轉(zhuǎn)到B,再返回,如何使音樂(lè)繼續(xù)播放?

      什么是IntentService?有何優(yōu)點(diǎn)? 什么時(shí)候使用Service?

      請(qǐng)描述一下Intent 和 Intent Filter。Intent傳遞數(shù)據(jù)時(shí),可以傳遞哪些類型數(shù)據(jù)? 說(shuō)說(shuō)Activity,Intent,Service是什么關(guān)系。請(qǐng)描述一下Broadcast Receiver。

      在manifest和代碼中如何注冊(cè)和使 用 broadcast receiver。請(qǐng)介紹下ContentProvider是如何實(shí)現(xiàn)數(shù)據(jù)共享的。請(qǐng)介紹下Android的數(shù)據(jù)存儲(chǔ)方式。

      為什么要用ContentProvider?它和sql的實(shí)現(xiàn)上有什么差別? 請(qǐng)介紹下Android中常用的五種布局。

      談?wù)刄I中,Padding和Margin有什么區(qū)別?

      widget相對(duì)位置的完成在antivity的哪個(gè)生命周期階段實(shí)現(xiàn)。

      請(qǐng)解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關(guān)系。AIDL的全稱是什么?如何工作?能處理哪些類型的數(shù)據(jù)?

      請(qǐng)解釋下Android程序運(yùn)行時(shí)權(quán)限與文件系統(tǒng)權(quán)限的區(qū)別。

      系統(tǒng)上安裝了多種瀏覽器,能否指定某瀏覽器訪問(wèn)指定頁(yè)面?

      對(duì)多線程的運(yùn)用和理解,及多線程之間handle的傳值。對(duì)android虛擬機(jī)的理解,包括內(nèi)存管理機(jī)制垃圾回收機(jī)制。

      Framework工作方式及原理,Activity是如何生成一個(gè)view的,機(jī)制是什么。android本身的一些限制,比如apk包大小限制,讀取大文件時(shí)的時(shí)間限。如何加載的音樂(lè)信息,如何改善其效率。

      ListView如何提高其效率?

      啟動(dòng)應(yīng)用后,改變系統(tǒng)語(yǔ)言,應(yīng)用的語(yǔ)言會(huì)改變么?

      啟動(dòng)一個(gè)程序,可以主界面點(diǎn)擊圖標(biāo)進(jìn)入,也可以從一個(gè)程序中跳轉(zhuǎn)過(guò)去,二者有什么區(qū)別?

      Android程序與Java程序的區(qū)別?

      Android中Task任務(wù)棧的分配。

      在Android中,怎么節(jié)省內(nèi)存的使用,怎么主動(dòng)回收內(nèi)存?

      不同工程中的方法是否可以相互調(diào)用?

      在Android中是如何實(shí)現(xiàn)判斷區(qū)分通話記錄中的電話狀態(tài),去電,來(lái)電、未接來(lái)電?

      dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念

      sim卡的EF 文件有何作用

      如何判斷是否有SD卡?

      嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性。

      什么是嵌入式實(shí)時(shí)操作系統(tǒng), Android 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎? 一條最長(zhǎng)的短信息約占多少byte? Linux中跨進(jìn)程通信的幾種方式。談?wù)剬?duì)Android NDK的理解。

      談?wù)凙ndroid的優(yōu)點(diǎn)和不足之處。

      Android系統(tǒng)中GC什么情況下會(huì)出現(xiàn)內(nèi)存泄露呢? Android UI中的View如何刷新。簡(jiǎn)單描述下Android 數(shù)字簽名。什么是ANR 如何避免它?

      59.60.61.62.63.64.65.66.android中的動(dòng)畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么?

      handler機(jī)制的原理。

      android中線程與線程,進(jìn)程與進(jìn)程之間如何通信。

      說(shuō)說(shuō)mvc模式的原理,它在android中的運(yùn)用。

      android中有哪幾種解析xml的類,官方推薦哪種?以及它們的原理和區(qū)別。

      DDMS與TraceView的區(qū)別? res目錄有默認(rèn)幾項(xiàng)resource。android的哪個(gè)版本是一次重大的升級(jí)?

      下載Android總結(jié)word格式文檔
      下載Android總結(jié).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Android培訓(xùn)總結(jié)(定稿)

        Android培訓(xùn)總結(jié) 非常高興能夠參加清華大學(xué)的Android暑期培訓(xùn),感謝老師們對(duì)我們的教導(dǎo)和關(guān)心,在短短一個(gè)月的時(shí)間里我學(xué)到了Java、數(shù)據(jù)庫(kù)、Android、JSP等知識(shí)。最重要的是通......

        Android 個(gè)人總結(jié)

        Android 個(gè)人總結(jié) 通過(guò)本學(xué)期的的學(xué)習(xí),我知道了android是由google開發(fā)的一款手機(jī)平臺(tái),android的基本架構(gòu)是基于linux內(nèi)核,由內(nèi)核向外的反別為庫(kù)和應(yīng)用架構(gòu),然后就是我們手機(jī)上的......

        Android學(xué)習(xí)總結(jié)

        Android學(xué)習(xí)總結(jié) 零零碎碎的總結(jié):1.客戶端的功能邏輯不難,UI界面也不難,但寫UI花的時(shí)間是寫功能邏輯的兩倍. 2.寫代碼前的思考過(guò)程非常重要,即使在簡(jiǎn)單的功能,也需要在本子......

        Android藍(lán)牙連接總結(jié)

        藍(lán)牙連線時(shí)首先會(huì)定義一個(gè)專門用來(lái)連接的函數(shù)體BtconnectDevice,當(dāng)按下Btconnect(為一個(gè)Buttton名時(shí))時(shí),程序會(huì)判斷此時(shí)Btconnect鍵是什么狀態(tài),當(dāng)Btconnect鍵為連接狀態(tài)時(shí),因?yàn)榘?.....

        Android之a(chǎn)ctivity總結(jié)

        Android之Activity總結(jié) 一、什么是Activity Activity 是用戶接口程序,原則上它會(huì)提供給用戶一個(gè)交互式的接口功能。它是 android 應(yīng)用程序的基本功能單元。Activity 本身是......

        Android期末復(fù)習(xí)題總結(jié)

        1、 Intent的Component屬性的作用是什么,如何定義此屬性? component(組件),指定Intent的的目標(biāo)組件的類名稱。通常 Android會(huì)根據(jù)Intent 中包含的其它屬性的信息,比如action、dat......

        Android學(xué)習(xí)總結(jié) 20110325專題

        Android學(xué)習(xí)總結(jié) 在這段時(shí)間主要對(duì)Android平臺(tái)有了一定的了解,對(duì)一些簡(jiǎn)單的設(shè)計(jì)也有了一定的掌握Android概念 Android是一個(gè)基于Linux核心的開放手持設(shè)備(主要是手機(jī))平臺(tái)操作......

        Android 實(shí)訓(xùn)總結(jié)

        Android實(shí)訓(xùn)總結(jié) ——XXXX 三周的Android 實(shí)訓(xùn),已接近尾聲。在這短暫的三周之內(nèi),有成功、有失敗;有喜悅、有辛酸。在實(shí)訓(xùn)老師的帶領(lǐng)下,我學(xué)會(huì)了很多。我們小組在實(shí)訓(xùn)老師的協(xié)助......