Android_API Demos_入口分析

來源:互聯網
上載者:User

基於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中可以看到,清單項目還可以按照你輸入的字元過濾。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.