午夜欧美_国产视频一区二区_91精品国产综合久久久久久丝袜_亚洲精品久久久久久动漫_成人午夜精品一区二区三区_亚洲伦理影院

Android后臺程序應(yīng)用技巧分享

來源:網(wǎng)絡(luò)

點(diǎn)擊:1468

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: Android,后臺程序,應(yīng)用技巧

      Android手機(jī)操作系統(tǒng)是由谷歌推出的一款開源的基于Linux平臺的操作系統(tǒng),深受廣大編程愛好者的喜愛。在Android系統(tǒng)中我們一直在接觸著前臺界面程序,其實(shí)在一開始接觸Android時(shí)就聽說了,程序就有有界面和無界面之分。

      Android后臺程序就是這類無界面的程序,它在后臺執(zhí)行,沒有影響你的界面。比如短信監(jiān)聽程序,執(zhí)行在后臺,當(dāng)有短信時(shí)才給你們提示,振動(dòng)或聲音;比如鬧鐘,設(shè)定好時(shí)間后,在定時(shí)通知你;再比如mp3播放器,選擇好音樂后,在待在后臺唱著,當(dāng)有電話來時(shí),自動(dòng)暫停,完后再繼續(xù)播放。

      其實(shí)分析下來,我們不難發(fā)現(xiàn),Android后臺程序跟前臺程序是一樣的,也就是在執(zhí)行我們指定的程序,只是留給我們兩個(gè)問題,1。因?yàn)闆]有界面,我們會(huì)問,怎么啟動(dòng),怎么終止?2。因?yàn)闆]有界面,這程序如何通知我們一些信息或狀態(tài)。

      前面的學(xué)習(xí)讓我們知道,一個(gè)Activity想Call另一個(gè)Activity時(shí),只需要能過中介人Intent就可以了,同樣我們與服務(wù)處理類打交道也是通過Intent來實(shí)現(xiàn),當(dāng)然,界面類是繼承著Activity,而服務(wù)類則是繼承著Service類。

      啟動(dòng)服務(wù):

      1.// Implicitly start a Service

      2.startService(new Intent(MyService.MY_ACTION));

      3.// Explicitly start a Service

      4.startService(new Intent(this, MyService.class));

      停止服務(wù):

      1.stopService(new Intent(this, MyService.class));

      同樣,跟Activity一樣的生命期中,系統(tǒng)也會(huì)自動(dòng)跟據(jù)不同的狀態(tài)來調(diào)用繼承函數(shù):

      1.@Override

      2.public void onCreate()

      3.public IBinder onBind(Intent intent)

      4.public void onStart(Intent intent, int startId)

      5.。。。

      在實(shí)際的開發(fā)中,我們一般都不會(huì)直接寫一個(gè)服務(wù)類,一般都會(huì)寫一個(gè)與Android后臺程序相配套的前臺程序,一般的程序總會(huì)有一些配置吧~~,然后這個(gè)界面中就可以很方便地來控制后臺程序的運(yùn)作。

      我們來回答第二個(gè)問題,就是在服務(wù)中我們怎么發(fā)起一個(gè)通知給用戶,在Andorid中,提供了以下幾種方式:

      1. Toast

      這是一個(gè)無模式的小窗體,會(huì)將顯示的信息顯示在首頁面中:

      實(shí)現(xiàn)代碼是:

      1.Context context = getApplicationContext();

      2.String msg = “To the bride an groom!”;

      3.int duration = Toast.LENGTH_SHORT;

      4.Toast toast = Toast.makeText(context, msg, duration);

      5.int offsetX = 0;

      6.int offsetY = 0;

      7.toast.setGravity(Gravity.BOTTOM, offsetX, offsetY);

      8.toast.show();

      當(dāng)然,你也可以顯示更雜的,可以將一個(gè)控制直接當(dāng)成一個(gè)Toast顯示出來,也可以自定義一個(gè)控件顯示出來,自定義控件的強(qiáng)大是大家都知道的~~

      2. Notifications

      這種方式是系統(tǒng)中比較通用的模式,通過這種方式你可以使系統(tǒng):將一個(gè)圖標(biāo)在狀態(tài)條上閃,讓機(jī)器震動(dòng),發(fā)出聲音等。

      實(shí)現(xiàn)代碼:

      1.String svcName = Context.NOTIFICATION_SERVICE;

      2.NotificationManager notificationManager;

      3.notificationManager = (NotificationManager)getSystemService(svcName);

      4.// Choose a drawable to display as the status bar icon

      5.int icon = R.drawable.icon;

      6.// Text to display in the status bar when the notification is launched

      7.String tickerText = “Notification”;

      8.// The extended status bar orders notification in time order

      9.long when = System.currentTimeMillis();

      10.Notification notification = new Notification(icon, tickerText, when);

      11.Context context = getApplicationContext();

      12.// Text to display in the extended status window

      13.String expandedText = “Extended status text”;

      14.// Title for the expanded status

      15.String expandedTitle = “Notification Title”;

      16.// Intent to launch an activity when the extended text is clicked

      17.Intent intent = new Intent(this, MyActivity.class);

      18.PendingIntent launchIntent = PendingIntent.getActivity(context, 0, intent, 0);

      19.notification.setLatestEventInfo(context, expandedTitle,expandedText,launchIntent);

      觸發(fā)方式:

      1.int notificationRef = 1;

      2.notificationManager.notify(notificationRef, notification);

      學(xué)會(huì)了Activity再寫個(gè)Android后臺程序也就不難了!!

      這里順便再提一下,在Android系統(tǒng)中也提供了多線程編程,我們知道不管是前臺還是后臺程序,都有生命期的,當(dāng)程序不活動(dòng)時(shí),我們想繼續(xù)讓程序執(zhí)行,這里我們需要用到線程了,在Android系統(tǒng)中使用線程,跟我們直接寫java線程程序非常想似:

      1.// This method is called on the main GUI thread.

      2.private void mainProcessing() {

      3.// 主程序中啟動(dòng)線程。

      4.Thread thread = new Thread(null, doBackgroundThreadProcessing,

      “Background”);

      5.thread.start();

      6.}

      7.// Runnable that executes the background processing method.

      8.private Runnable doBackgroundThreadProcessing = new Runnable() {

      9.public void run() {

      10.//線程執(zhí)行內(nèi)容。。。

      11.}

      12.};

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請聯(lián)系我們刪除。

    主站蜘蛛池模板: 久草精品在线观看 | 精品久久中文网址 | 伊人网伊人影院 | 国产大片91精品免费观看不卡 | 国产精品亚洲一区二区在线观看 | 欧美国产日韩在线 | 国产青草视频在线观看 | 国产精品久久久久久久久久免费 | 啪啪网免费 | 亚洲精品第一页 | 91日韩| 日本成本人观看免费fc2 | 99热免费| 免费看一级黄色毛片 | 国产一区亚洲欧美成人 | 亚洲一区二区在线 | 伊人黄 | 中文字幕一区二区在线观看 | 欧美成人一区二区三区在线视频 | 国产成人综合久久精品尤物 | 成人一级免费视频 | 91精品久久久 | 日韩电影免费在线观看网址 | 欧美区国产区 | 午夜日韩精品 | 亚洲一区精品伊人久久 | 国产一区二区三区成人久久片 | 亚洲高清视频在线 | 欧洲人交xxx69 | 精品久久久久久久久中文字幕 | 午夜精品视频 | 日韩欧美视频二区 | 国产视频高清在线观看 | 国产91精品对白露脸全集观看 | 成人三级在线观看 | 91大神在线精品视频一区 | 亚洲欧美日韩综合网导航 | 日韩综合| 久久精品免费一区二区视 | 91精品成人免费国产片 | 欧美一区二区在线观看免费网站 |