API Demos_入口 – Android移動開發技術文章_手機開發 Android移動開發教學課程

基於android 2.3.3的API Demos。
先看下ApiDemosApplication.java這個類,這個類繼承自Application,主要作用是保存一些全局的狀態,這個類會在你的應用程序創建時便被實例化,
這個類的類名,便是AndroidManifest.xml 的 <application> tag的name。比如在這個類中onCreate()中:
PreferenceManager.setDefaultValues(this, R.xml.default_values, false);這個方法將會從default_values.xml中填充默認的值到com.example.android.apis_preferences.xml這個默認的配置文件中去。
這個配置文件在/data/data/com.example.android.apis/shared_prefs/下。根據官方API,This should be called by the application's main activity.
這樣其他的activity、service等才能相應的使用這個配置文件。
接著看下ApiDemos.java,這個類充分應用瞭AndroidManifest.xml這個文件。首先這個類是程序入口,一個ListActivity,這個類會重復利用到。
在其onCreate()方法裡,第一次時path=""即prefix="",接著看getData()這個方法,這個方法就是給這個listview填值的,填入的值放在myData這個List<Map>中:

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
這段代碼將AndroidManifest.xml文件中所有Intent action是ACTION_MAIN及category是CATEGORY_SAMPLE_CODE的activity全部取得。放入list中。
下面就是一些邏輯瞭,應該能看懂。
ResolveInfo info = list.get(i);
CharSequence labelSeq = info.loadLabel(pm);取得所有activity的label,label的格式類似於App/Activity/Hello World這樣的,如果我們點擊App或者Activity時還是調用ApiDemos.java這個類,隻是listview的內容
在變而已,在browseIntent()這個方法中。
每個列表項是按照首個字符的ascii碼排序的,在sDisplayNameComparator中可以看到,列表項還可以按照你輸入的字符過濾。

 作者 ZircoN

發佈留言