Android雜記(一)

來源:互聯網
上載者:User

標籤:

Android系統架構

Android大致可以分為四層架構,五塊地區


1.Linux核心層

Android系統是基於Linux核心的,這一層為Android裝置的各種硬體提供了底層的驅動,如顯示驅動、音頻驅動、照相機驅動、Wi-Fi驅動、電源管理等。

2.系統運行庫層

這一層通過一些C/C++庫來為Android系統提供了主要的特性支援。如SQLite庫提供了資料庫的支援,OpenGL|ES庫提供了3D繪圖的支援,Webkit庫提供了瀏覽器核心的支援等。

同樣在這一層還有Android執行階段程式庫,他主要提供了一些核心庫,能夠允許開發人員使用Java語言來編寫Android應用。另外Android執行階段程式庫中還包含了Dalvik虛擬機器執行個體。相較於Java虛擬機器,Dalvik是專門為行動裝置定製的,它針對手機記憶體、CPU效能有限等情況做了最佳化處理。

3.應用程式框架層

這一層主要提供了構建應用程式時可能用到的各種API,Android內建的一些核心應用就是使用這些API完成的,開發人員也可以通過使用這些API來構建自己的應用程式。

4.應用程式層

所有安裝在手機上的應用程式都是屬於這一層的,比如系統內建的連絡人、簡訊等程式,或者是你從Google Play上下載的小遊戲,當然還包括你自己開發的程式。



requestWindowFeature(Window.FEATURE_NO_TITLE)

不在活動中顯示標題列

注意這句代碼一定要在setContentView()之前執行,不然會報錯。



在活動中使用Menu

首先在res目錄下建立一個menu檔案夾,在這個檔案夾下面建立一個名叫main的菜單檔案main.xml


<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">        <item        android:id="@+id/add_item"        android:title="Add"        />        <item        android:id="@+id/remove_item"        android:title="Remove"        />        </menu>

    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.//        getMenuInflater().inflate(R.menu.menu_main, menu);        getMenuInflater().inflate(R.menu.main, menu);        // 返回true表示允許建立的菜單顯示出來 返回false建立的菜單將無法顯示        return true;    }
    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.add_item:                Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();                break;            case R.id.remove_item:                Toast.makeText(this, "you clicked Remove", Toast.LENGTH_LONG).show();                break;            default:        }        return true;    }



    @Override    public void onClick(View v) {        finish();    }

可用於銷毀一個活動



Intent(Context packageContext, Class<?> cls)


顯式Intent

        Intent intent = new Intent(MAinActivity.this, SecondActivity.class);        startActivity(intent);


隱式Intent

每個Intent中只能指定一個action,但卻能指定多個category


            <intent-filter>                <action android:name="com.example.activity.ACTION_START" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="com.example.activity.MY_CATEGORY" />            </intent-filter>


Intent intent = new Intent("com.example.activity.ACTION_START");intent.addCategory("com.example.activity.MY_CATEGORY");startActivity(intent);


使用隱式Intent開啟網頁

Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);


        <activity android:name=".ThirdActivity">            <intent-filter>                <action android:name="android.intent.action.VIEW" />                <category android:name="android.intent.category.DEFAULT" />                <data android:scheme="http" />            </intent-filter>        </activity>


調用系統撥號介面

Intent intent = new Intent(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:10086"));


向下一個活動傳遞資料


String data = "Hello SecondActivity";Intent intent = new Intent(MainActivity.this, SecondActivity.class);intent.putExtra("extra_data", data);startActivity(intent);
Intent intent = getIntent();String data = intent.getStringExtra("extra_data");


返回資料給上一個活動

Intent intent = new Intent(MainActivity.this, SecondActivity.class);// 1為請求碼startActivityForResult(intent, 1);

Intent intent = new Intent();intent.putExtra("data_return", "Hello MainActivity");// 第一個參數用於向上一個活動返回處理結果,一般只使用RESULT_OK或RESULT_CANCELED這兩個值setResult(RESULT_OK, intent);finish();

由於我們是使用startActivityForResult()方法來啟動SecondActivity的,在SecondActivity被銷毀之後會回調上一個活動的onActivityResult()方法

因此我們需要在MainActivity中重寫onActivityResult()方法

    /**     * requestCode 請求碼     */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    switch (requestCode) {    case 1:    if (resultCode == RESULT_OK) {    String returnedData = data.getStringExtra("data_return");    Log.d("MainActivity", returnedData);    }    break;    default:    }    }


通過按Back鍵返回資料

重寫onBackPressed()方法


@Overridepublic void onBackPressed() {Intent intent = new Intent();intent.putExtra("data_return", "Hello MainActivity");setResult(RESULT_OK, intent);finish();}




Android雜記(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.