android學習筆記

來源:互聯網
上載者:User

標籤:

1、android的四大組件的了大概功能

    activity:負責顯示介面,和使用者互動。  

    service:運行在後台。

  content provider:為程式app之間的資料訪問提供介面。

  broadcast:廣播

2、組件的啟用

  activity、service、broadcast都是通過intent激動的。

  啟動activity:

你可以啟動一個activity(或者讓讓它來做一些新的工作)通過傳遞一個Intent給startActivity() 或者 startActivityForResult() (當你想讓一個activity為你返回一個結果)。            Intent intent = new Intent(XskpActivity.this,                        XsSpmlActivity.class);                startActivityForResult(intent, REQUEST_CXSPML);//從loginActivity介面跳到homeActivity介面                Intent intent = new Intent();                intent.setClass(LoginActivity.this, HomeActivity.class); // 描述起點和目標                startActivity(intent);
View Code

     啟動service:

  用startService或是bindService

  啟動broadcast

  用sendBroadcast,sendOrderedBroadcast,或是sendStickyBroadcast

3、設定檔AndroidManifest.xml

  所有的組件:activity,service,broadcast,contentprovider必須在這個檔案裡面聲明。

  聲明程式要獲得的許可權

  聲明程式正常啟動並執行配置要求:包括api的要求,配置組件要求

4、activity的使用   4.1、建立activity

    1)通過建立activity的子類來建立,在類裡面的onCreate()方法裡通過調用setContentView()並轉入布局檔案xml的id來設定程式activity的UI。

    2)activity的布局用xml檔案來實現,也可以在代碼裡自己寫布局

    3)在androidManifest.xml檔案裡配置activity,不聲明就訪問不了

<manifest ... >  <application ... >      <activity android:name=".ExampleActivity" />      ...  </application ... >  ...</manifest >
View Code

 

  4.2、啟動activity

    1)簡單啟動自己程式裡另一個activity

Intent intent = new Intent(this, SignInActivity.class);startActivity(intent);
View Code

      在intent裡寫明要啟動的activity名字就可以了 

   2)啟動其它程式的activity
Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);startActivity(intent);
View Code

 

       在intent裡描述要啟動的activity的條件,滿足這些條件的程式會自動啟動,如果程式不止一個,系統會讓使用者選擇運行哪個程式。

 

   4.3、啟動一個帶返回結果的activity

      1)只要用startActivityForResult()方法代碼startActivity()就行

      2)在本activity裡實現onActivityResult()回調方法來擷取返回的結果。

private void pickContact() {    // Create an intent to "pick" a contact, as defined by the content provider URI    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);    startActivityForResult(intent, PICK_CONTACT_REQUEST);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST    if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {        // Perform a query to the contact‘s content provider for the contact‘s name        Cursor cursor = getContentResolver().query(data.getData(),        new String[] {Contacts.DISPLAY_NAME}, null, null, null);        if (cursor.moveToFirst()) { // True if the cursor is not empty            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);            String name = cursor.getString(columnIndex);            // Do something with the selected contact‘s name...        }    }}
View Code

 

 

  4.4、關閉activity

      用finish()或finishActivity(),但一般要關閉activity,關閉後使用者就不能返回到這個activity了,一般都是交能系統去關閉,手動關閉後影響了使用者的體驗。

   4.5、管理activity的生命週期

      1)生命週期有:

        resumed:activity在前台,有焦點

        paused:activity被其它的activity擋住了,沒有了焦點,但本身還是可見的。

        stop:activity完全被其它的activity覆蓋

      2)實現生命週期回調方法

public class ExampleActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // The activity is being created.    }    @Override    protected void onStart() {        super.onStart();        // The activity is about to become visible.    }    @Override    protected void onResume() {        super.onResume();        // The activity has become visible (it is now "resumed").    }    @Override    protected void onPause() {        super.onPause();        // Another activity is taking focus (this activity is about to be "paused").    }    @Override    protected void onStop() {        super.onStop();        // The activity is no longer visible (it is now "stopped")    }    @Override    protected void onDestroy() {        super.onDestroy();        // The activity is about to be destroyed.    }}
View Code

        一般要在onCreate方法裡實現activity布局和建立資源,在onDestroy()方法裡進行資源的釋放。

      3)生命週期圖和表

方法 描述 之後可否被殺死? 下一個方法
onCreate() activity第一次被建立時調用。在這裡你應該完成所有常見的靜態設定工作——建立view、綁定list資料等等。 本方法傳入一個包含了該activity前一個狀態的Bundle對象(如果之前已捕獲了狀態的話,詳見後面的儲存Activity狀態)。

下一個回調方法總是onStart()。

onStart()
onRestart() activity被停止後、又再次被啟動之前調用。

下一個回調方法總是onStart()

onStart()
onStart() activity要顯示給使用者之前調用。

如果activity進入前台,則下一個回調方法是onResume();如果進入隱藏狀態,則下一個回調方法是onStop()。

onResume() 或 onStop()
onResume() activity開始與使用者互動之前調用。這時activity是在activity棧的頂端,使用者可以向其中輸入。

下一個回調方法總是onPause()。

onPause()
onPause() 當系統準備啟動另一個正在恢複的activity時調用。這個方法通常用於把未儲存的改動提交為永久資料、停止動畫播放、以及其它可能消耗CPU的工作等等。 它應該非常迅速地完成工作,因為下一個activity在本方法返回前是不會被恢複啟動並執行。

如果activity返回前台,則下一個回調方法是onResume();如果進入使用者不可見狀態,則下一個是onStop()

可以 onResume() 或 onStop()
onStop() 當activity不再對使用者可見時調用。原因可能是它即將被銷毀、或者其它activity(已有或建立的)被恢複運行並要覆蓋本activity。

如果activity還會回來與使用者互動,則下一個回調方法是onRestart();如果這個activity即將消失,則下一個回調方法是onDestroy()

可以 onRestart() 或 onDestroy()
onDestroy() 在本activity被銷毀前調用。這是activity收到的最後一個調用。 可能是因為activity完成了工作(有些人在這裡調用finish()), 也可能是因為系統為了騰出空間而臨時銷毀activity的本執行個體。 可以利用isFinishing() 方法來區分這兩種情況。 可以
  4.6、儲存activity狀態(待學)  4.7、多activity的合作(待學) 5、fragments(待學)6、stacks和back stack(待學)

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.