欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Android中的應(yīng)用程序組件有哪些-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Android中的應(yīng)用程序組件有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)專注于縉云企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)。縉云網(wǎng)站建設(shè)公司,為縉云等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

1、Activity


Activty是一種展示型組件,Activity為用戶提供了一個可視的用戶界面。例如,一個撥打電話程序可能有一個Activity用來顯示可以撥打電話的聯(lián)系人,第二個Activity用來新建聯(lián)系人寫信息,其他的Activity用來查看具體的聯(lián)系人,或者更改聯(lián)系人信息,雖然應(yīng)用程序中的各個Activity所提供的用戶界面聚合性很強(qiáng),但是每個Activity都獨立于其他的Activity,每一個實例化的Activity都是Activity的子類,Intent可觸發(fā)了Activity的啟動,Intent可分為顯式Intent觸發(fā)和隱式Intent觸發(fā);顯式Intent觸發(fā)可明確的指向Activity組件,用如下代碼表示:

 Intent in = new Intent(this,SecondActivity.class)
 MainActivity.this.startActivity(in)

隱式Intent觸發(fā)是指向一個或者2個以上的Activity的目標(biāo)組件,它也可以沒有目標(biāo)Activity,它的隱式觸發(fā)用如下代碼表示:

Intent intent = new Intent();
intent.setPackage("com.xe.launchmode");
intent.setAction("com.xe.actoin.MAP");
intent.addCategory("android.intent.category.APP_MAPS");
MainActivity.this.startActivity(intent);

2、Service

Service是一種后臺處理任務(wù)型組件,它一直在后臺運行,用于后臺處理一系列的計算任務(wù)或者處理其他事情的時候播放背景音樂等,每個service都擴(kuò)展自Service類;Service組件和Activity組件的開啟是不同的,Activity只有一種啟動狀態(tài),用如下代碼表示:

Intent in = new Intent(this,SecondActivity.class)
startActivity(in)

而Service的開啟卻有2種,當(dāng)處于啟動狀態(tài)時,它可以做一些后臺任務(wù),不需要和用戶界面交互,它的生命周期和應(yīng)用程序一樣長,多媒體播放器播放音樂是應(yīng)用Service的一個非常好的例子。多媒體播放器程序可能包含一個或者多個Activity,用戶通過這些Activity選擇并播放音樂。然而音樂回放并不需要一個Activity來處理,因為用戶可能會希望音樂一直播放下去,即使退出了播放器去執(zhí)行其他應(yīng)用程序也不停止。為了讓音樂一直播放,多媒體播放器Activity可能會啟動一個Service在后臺播放音樂。Android系統(tǒng)會使音樂回放Service一直運行,即使在啟動這個Service的Activity退出之后。它的啟動可用如下代碼表示:

Intent in = new Intent(this,SecondActivity.class)
MainActivity.this.startService(in)

當(dāng)它處于綁定狀態(tài)時,它即可以做一些后臺任務(wù),也可以和用戶界面做交互,它的生命周期和用戶界面一樣長,它的綁定可用如下代碼表示:

ServiceConnection mBinderPoolConnection = new ServiceConnection() {
  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {
   
  }

  @Override
  public void onServiceDisconnected(ComponentName name) {

  }
 };
 
Intent intent = new Intent(mContext, MyService.class); 
MainActivity.this.bindService(intent,new ServiceConnection(),Context.BIND_AUTO_CREATE);

以上2中開啟,不管是哪一種都不可以直接在Service中做耗時操作,因為它是運行在主線程中的,如果非要做耗時操作,應(yīng)該開一個工作線程給它去執(zhí)行。

3、BroadcastReceiver

一般不執(zhí)行任何任務(wù),僅僅是接收并相應(yīng)廣播通知一類的組件。大部分廣播通知是由系統(tǒng)產(chǎn)生的,例如改變時區(qū)、鬧鐘提醒、用戶選擇了一幅圖片或者用戶改變了語言選項。應(yīng)用程序同樣也可以發(fā)送廣播通知,例如通知其他應(yīng)用程序某些數(shù)據(jù)已經(jīng)下載到設(shè)備上可以使用;一個應(yīng)用程序的BroadcastReceiver來響應(yīng)它的通知,所有的BroadcastReceiver的實現(xiàn)類都擴(kuò)展自BroadcastReceiver類。BroadcastReceiver適合用于不同的組件以及不同的進(jìn)程之間進(jìn)行通信,它是沒有用戶界面的,是因為它在系統(tǒng)內(nèi)部工作。下面介紹它的2種注冊方式,首先是靜態(tài)注冊,它是在AndroidManifest.xml文件中完成的,安裝應(yīng)用時會被應(yīng)用解析,不啟動應(yīng)用也能接收廣播,用如下監(jiān)聽wifi狀態(tài)改變的代碼表示:

<receiver android:name=".myapplication.receiver.WifiReceiver">
 <intent-filter>
   <action android:name="android.net.wifi.RSSI_CHANGED" />
   <action android:name="android.net.wifi.STATE_CHANGE" />
   <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
  </intent-filter>
</receiver>

從以上代碼可以發(fā)現(xiàn),接收過程的匹配是通過<intent-filter>來描述的,可以總結(jié)出廣播是一個低耦合的觀察者模式這樣的結(jié)論。
另外一種方式就是動態(tài)注冊,需要啟動應(yīng)用程序才可以接收到廣播,是通過在Java代碼中完成注冊的,用如下代碼表示它的動態(tài)注冊:

public class MyBroadcastReceiver extends BroadcastReceiver{
  @Override
  public void onReceive(Context context, Intent intent){
   
  }
 }
 
 
 MyBroadcastReceiver receiver = new MyBroadcastReceiver();
 IntentFilter filter=new IntentFilter();
 filter.addAction("com.xe.intent.action.ACTION_1");
 filter.addAction("com.xe.intent.action.ACTION_2");
 SecondActivity.this.registerReceiver(receiver,filter);

發(fā)送廣播可用如下代碼來實現(xiàn):

Intent intent = new Intent();
intent.setAction("com.xe.intent.action.ACTION_2");
MainActivity.this.sendBroadcast(intent);

以上2種廣播的注冊方式中廣播的接收是不可以做耗時操作的,因為接收廣播的方法是在主線程中被調(diào)用的。

4、ContentProvider

ContentProvider是一種共享數(shù)據(jù)型組件,應(yīng)用程序可以通過ContentProvider來訪問其他應(yīng)用程序的數(shù)據(jù),包括其他應(yīng)用程序的私有數(shù)據(jù);和Service一樣,它是沒有用戶界面的,它的內(nèi)部需要實現(xiàn)insert、update、delete和query方法,它在內(nèi)部使用一份數(shù)據(jù)集合并且對數(shù)據(jù)集合沒有要求。ContentProvider是跨進(jìn)程通信的,當(dāng)Android系統(tǒng)收到一個需求某個組件進(jìn)行處理的請求的時候,Android會確保處理此請求的組件的宿主進(jìn)程是否已經(jīng)在運行,如果沒有,則立即啟動這個進(jìn)程。ContentProvider是提供一個外部接口ContentResolver給其他進(jìn)程訪問數(shù)據(jù)的,下面一部分代碼簡單的表示query方法的使用過程:

Uri bookUri = Uri.parse("content://com.zyb.provider/data");
ContentResolver cr = ContentProviderActivity.this.getContentResolver();
Cursor bookCursor = cr.query(bookUri,new String[]{"_id","name"},null,null,null);
while (bookCursor.moveToNext()) {
 int id = bookCursor.getInt(0);
 String name = bookCursor.getString(1);
}

上述就是小編為大家分享的Android中的應(yīng)用程序組件有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:Android中的應(yīng)用程序組件有哪些-創(chuàng)新互聯(lián)
路徑分享:http://chinadenli.net/article2/dheeic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站網(wǎng)站維護(hù)用戶體驗移動網(wǎng)站建設(shè)面包屑導(dǎo)航ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化