97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android應(yīng)用組件Activity  
 
Android應(yīng)用組件Activity
分享到:

對(duì)Android應(yīng)用程序而言,應(yīng)用組件主要由Activity、Service、Broadcast Receivers、Intent、Content Providers、AndroidManifest等構(gòu)成。Activity是與用戶直接交互UI組件,將在本文詳細(xì)給大家介紹一下!

作為和用戶之間直接交互的UI組件,Activity組件無(wú)疑在Android的UI組件中占據(jù)著重要的位置。在通常情況下,Activity作為一個(gè)全屏的窗口出現(xiàn),也可以作為浮動(dòng)窗口或者其他Activity的子Activity出現(xiàn)。

作為應(yīng)用生命周期中重要的組件之一,Activity的發(fā)布和管理構(gòu)成了平臺(tái)應(yīng)用模型的基礎(chǔ)。在Android中,Activity的管理是通過(guò)Activity棧的方式來(lái)進(jìn)行的,在Activity的生命周期中,存在4種狀態(tài):激活(active)、運(yùn)行(running)、停止(stopped)、暫停(paused)。

當(dāng)Activity處于屏幕的前端時(shí),Activity處于"active"或"running"狀態(tài),當(dāng)Activity失去焦點(diǎn)但可見(jiàn)(新建了一個(gè)非全屏或者透明的Activity,該Activity處于Activity棧的頂部)時(shí),Activity處于"paused"狀態(tài)。處于"paused"狀態(tài)的Activity依然維護(hù)著其所有的狀態(tài)和成員信息,并繼續(xù)處于窗口管理器的管理之下,在內(nèi)存極端不足情況下,處于"paused"狀態(tài)的Activity有可能被殺死。

當(dāng)Activity不再可見(jiàn)時(shí),該Activity處于"stopped"狀態(tài),處于"stopped"狀態(tài)的Activity會(huì)繼續(xù)維護(hù)其所有的狀態(tài)和成員信息,但當(dāng)系統(tǒng)內(nèi)存不足需要清理釋放時(shí),處于"stopped"狀態(tài)的Activity便成為被殺死的考慮對(duì)象。

在Activity變得再次可見(jiàn)時(shí),如果需要做界面上的刷新,相關(guān)的操作可以在Activity:: onResume()方法中處理。在Activity構(gòu)建完成后會(huì)獲得焦點(diǎn),相應(yīng)的焦點(diǎn)變化可以在Activity:: onWindowFocusChanged()方法中監(jiān)聽(tīng)。

Activity和Activity間的切換通常需要借助于Intent組件來(lái)進(jìn)行。一個(gè)簡(jiǎn)單的調(diào)用方式如下:

Intent in = new Intent(context, BluetoothOppBtErrorActivity.class); //設(shè)置調(diào)用的Activity
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //設(shè)置標(biāo)志位
    in.putExtra("title", context.getString(R.string.unknown_file)); //設(shè)置標(biāo)題
    in.putExtra("content", context.getString(R.string.unknown_file_desc));//設(shè)置顯示內(nèi)容
    context.startActivity(in); //啟動(dòng)Activity,不需返回?cái)?shù)據(jù)
    在被調(diào)Activty中,處理數(shù)據(jù)的方法如下:
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String mErrorTitle = intent.getStringExtra("title");
        mErrorContent = intent.getStringExtra("content");
        ……
    }

在泛化Activity類時(shí),必須實(shí)現(xiàn)Activity:: onCreate()和Activity:: onPause ()兩個(gè)方法。另外通過(guò)一個(gè)Activity調(diào)用另一個(gè)Activity時(shí),如果不需要返回?cái)?shù)據(jù),可以通過(guò)Context.startActivity()方法來(lái)進(jìn)行。如果需要返回?cái)?shù)據(jù),則通過(guò)Context.startActivityForResult()方法來(lái)處理,常見(jiàn)的方式如下:

Intent intent = new Intent();
    intent.setClass(this, CreatePlaylist.class);
    startActivityForResult(intent, NEW_PLAYLIST); // NEW_PLAYLIST為"requestCode"
    在被調(diào)Activity中,處理完請(qǐng)求后,可以通過(guò)如下方法向調(diào)用Activity返回?cái)?shù)據(jù):
    setResult(RESULT_OK, (new Intent()).setData(uri));
    對(duì)于返回的數(shù)據(jù),調(diào)用Activity將在其onActivityResult()方法中處理。處理過(guò)程如下:
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case NEW_PLAYLIST:
            if (resultCode == RESULT_OK) {
                Uri uri = intent.getData();
                ……
            }
        }
    }

主要的Activity屬性包括:taskAffinity 、launchMode 、allowTaskReparenting 、clearTaskOnLaunch 、alwaysRetainTaskState finishOnTaskLaunce等。

另外,對(duì)于某些特殊的Activity,可能希望提供對(duì)標(biāo)題欄的定制,在Android中,對(duì)標(biāo)題欄支持如下特征:FEATURE_NO_TITLE、FEATURE_PROGRESS、FEATURE_LEFT_ICON、FEATURE_RIGHT_ICON、FEATURE_CUSTOM_TITLE等。

為了隱藏標(biāo)題欄,可以在Java代碼中實(shí)現(xiàn),也可以在AndroidManifest.xml文件中實(shí)現(xiàn),由于框架上的因素,如果是通過(guò)Java代碼實(shí)現(xiàn),標(biāo)題欄在Activity初始化時(shí)仍有短暫的可見(jiàn)性,在AndroidManifest.xml文件中實(shí)現(xiàn),則不存在類似問(wèn)題。其Java實(shí)現(xiàn)方式如下:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); //Java代碼方式
    setContentView(R.layout.main); //必須放置在requestWindowFeature()后面
    ……
    }
    其AndroidManifest.xml文件實(shí)現(xiàn)方式如下:
    < activity android:name=".graphics.FrameBufferObjectActivity"
        android:label="Graphics/OpenGL ES/Frame Buffer Object"
        android:theme="@android:style/Theme.NoTitleBar"
        android:configChanges="orientation|keyboardHidden"> //禁止界面旋轉(zhuǎn)
        < intent-filter>
          < action android:name="android.intent.action.MAIN" />
          < category android:name="android.intent.category.SAMPLE_CODE" />
        < /intent-filter>
    < /activity>
    如果希望自定義標(biāo)題欄。方法為:
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
    ……
    }
    如果希望同時(shí)隱藏標(biāo)題欄和狀態(tài)欄,方法如下:
    < activity android:name="GL2JNIActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //同時(shí)隱藏狀態(tài)欄
    android:launchMode="singleTask"
        android:configChanges="orientation|keyboardHidden">
          < intent-filter>
            < action android:name="android.intent.action.MAIN" />
            < category android:name="android.intent.category.LAUNCHER" />
          < /intent-filter>
        < /activity>

 更多相關(guān)文章

·Android RPC管道文件系統(tǒng)
·Android RPC遠(yuǎn)程調(diào)用
·SMSM狀態(tài)通信處理過(guò)程
·SMD 數(shù)據(jù)通信的實(shí)現(xiàn)
·Android SMD數(shù)據(jù)通信概述