1.ListView怎麼提高滑動效率
2.說下你做過項目的包的構架,(聯網,解析,activity,database) 重點
3.加載大量圖片怎麼做(包括小圖和查看大圖) 怎麼減少一次跟服務器的鏈接數,怎麼做緩存,
4.onInterceptTouchEvent(),onTouchEvent()的關系
5.怎麼在oncreate中大致計算一個view的高度(調一下view的measure,然後再getHeight就行了)
6.MessageQueue,Looper,handler的關系(重點)
7.android的widget統計,就是統計從widget中啟動的次數
8.大量數組怎麼找出前5個最大的數(nlog5的復雜度,用一個5個元素的堆排序)
9.final ,finalize,finally區別
10.怎麼寫一個線程池(重點)當裡面的線程池數滿了,外面又來線程怎麼辦(用緩沖池),還有這個線程池怎麼工作的,同步原理
11.線程的yield,sleep(不釋放鎖),wait(釋放鎖,對象級別的)
12.靜態變量和動態變量 在java中的存儲有啥差別
13.java 深拷貝(重點)
14.android task的形式(singletask,singtop之類的,要弄清楚他們的表現形式)
15.listView下拉刷新怎麼實現的
16.Gallery的onFling()的實現原理,重寫Gallery後onCount()的東西
17.android的service的啟動和銷毀(重點)
18.java有幾種方式實現多線程
19.怎麼實現數據庫的索引(B-樹)
20.java中的軟引用,虛引用之類的表現形式)
21.java中的垃圾回收 如果讓你實現一個,怎麼實現(百度面的時候問的)
22.怎麼自定義一個View onMeasure,onLayout,這些的調用次序
23.怎麼自定義屬性 (要寫出來)
24.android的進程間通信
25.BitmapFactory.decode() sdcard中的一個圖片 在不同分辨率下的getWidth()和getHeight()有什麼差別
26.讓你當場寫一個聯網(給你url,用httpGet寫)
27.cmwap,cmnet,ctwap,ctnet的區別
28.android scrollview怎麼實現左右滑動 (有個scroller的屬性,可以scroller.startScroll)
29.android怎麼實現左右滑動大圖)
30.activity的生命周期(重點)
31android支持幾種動畫,還有各種動畫的表現形式)(種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化;另一種Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。 )
32 gni怎麼寫的
33.android 怎麼進行傳值的,尤其是對象
34怎麼讓activity像對話框一樣彈出來
35.怎麼寫一個contentProvider
進程間通信的答案:
IDL的全稱是什麼?如何工作?能處理哪些類型的數據?
AIDL的英文全稱是Android Interface Define Language
當A進程要去調用B進程中的service時,並實現通信,我們通常都是通過AIDL來操作的
A工程:
首先我們在net.blogjava.mobile.aidlservice包中創建一個RemoteService.aidl文件,在裡面我們自定義一個接口,含有方法get。ADT插件會在gen目錄下自動生成一個RemoteService.java文件,該類中含有一個名為RemoteService.stub的內部類,該內部類中含有aidl文件接口的get方法。
說明一:aidl文件的位置不固定,可以任意
然後定義自己的MyService類,在MyService類中自定義一個內部類去繼承RemoteService.stub這個內部類,實現get方法。在onBind方法中返回這個內部類的對象,系統會自動將這個對象封裝成IBinder對象,傳遞給他的調用者。
其次需要在AndroidManifest.xml文件中配置MyService類,代碼如下:
為什麼要指定調用AIDL服務的ID,就是要告訴外界MyService這個類能夠被別的進程訪問,只要別的進程知道這個ID,正是有了這個ID,B工程才能找到A工程實現通信。
說明:AIDL並不需要權限
B工程:
首先我們要將A工程中生成的RemoteService.java文件拷貝到B工程中,在bindService方法中綁定aidl服務
綁定AIDL服務就是將RemoteService的ID作為intent的action參數。
說明:如果我們單獨將RemoteService.aidl文件放在一個包裡,那個在我們將gen目錄下的該包拷貝到B工程中。如果我們將RemoteService.aidl文件和我們的其他類存放在一起,那麼我們在B工程中就要建立相應的包,以保證RmoteService.java文件的報名正確,我們不能修改RemoteService.java文件
bindService(new Inten("net.blogjava.mobile.aidlservice.RemoteService"), serviceConnection, Context.BIND_AUTO_CREATE);
ServiceConnection的onServiceConnected(ComponentName name, IBinder service)方法中的service參數就是A工程中MyService類中繼承了RemoteService.stub類的內部類的對象。
Android應用程序結構是:
Linux Kernel(Linux內核)、Libraries(系統運行庫或者是c/c++核心庫)、Application
Framework(開發框架包)、Applications (核心應用程序)
在android中,請簡述jni的調用過程。(8分)
1)安裝和下載Cygwin,下載 Android NDK
2)在ndk項目中JNI接口的設計
3)使用C/C++實現本地方法
4)JNI生成動態鏈接庫.so文件
5)將動態鏈接庫復制到java工程,在java工程中調用,運行java工程即可
自定義屬性的答案:
package cn.com.flyfot.attrs;
public MyView(Context context, AttributeSet attr) {
super(context, attr);
mPaint = new Paint();
//獲取自定義屬性
TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);
//獲取尺寸屬性值,默認大小為:30
float textSize = a.getDimension(R.styleable.myView_textSize, 30);
//獲取顏色屬性值,默認顏色為:0x990000FF
int textColor = a.getColor(R.styleable.myView_textColor, 0x990000FF);
//設置畫筆的尺寸和顏色
mPaint.setTextSize(textSize);
mPaint.setColor(textColor);
//緩存屬性,可以不設置,主要是為了提高效率
a.recycle();
}
xmlns:flyfot="http://schemas.android.com/apk/res/cn.com.flyfot.attrs"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
flyfot:textSize="120px"
flyfot:textColor="#ABCDEFEF"
/>