第92章、廣播之三通過廣播啟動服務(從零開始學Android)
Service(服務)在Android中地位是至關重要的,我們可以通過Activity與Broadcast(廣播)啟動Service(服務),我們本章學習如何通過廣播Broadcast啟動服務Service。
也許你會說,能用Activity啟動,幹嘛要用廣播呢?——且聽電話監聽、簡訊監聽再作分解!
一、設計介面
1、佈局檔案
開啟res/layout/activity_main.xml檔案。
輸入以下程式碼:
<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="通過Broadcast啟動Service" /> </LinearLayout>
二、程式檔案
1、建立“src/com.genwoxue.broadcastservice/ServiceUtil.java”檔案。
然後輸入以下程式碼:
package com.genwoxue.broadcastservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class ServiceUtil extends Service{ private static final String TAG="AboutService"; @Override public IBinder onBind(Intent intent){ return null; } @Override public void onCreate(){ Log.i(TAG,"服務:onCreate()"); } //啟動 @Override public int onStartCommand(Intent intent,int flags,int startId){ Log.i(TAG, "服務啟動:onStart()=>Intent"+intent+",startID="+startId); return Service.START_CONTINUATION_MASK; } @Override public void onDestroy(){ Log.i(TAG,"服務:onDestroy()"); } }
2、建立“src/com.genwoxue.broadcastservice/BroadcastReceiverUtil.java”檔案。
然後輸入以下程式碼:
package com.genwoxue.broadcastservice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BroadcastReceiverUtil extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ //廣播接收器(接收方)判斷Action為“com.genwoxue.action.ABOUTSERVICE”則啟動服務 if("com.genwoxue.action.ABOUTSERVICE".equals(intent.getAction())){ context.startService(new Intent(context,ServiceUtil.class)); } } }
3、開啟“src/com.genwoxue.broadcastservice/MainActivity.java”檔案。
然後輸入以下程式碼:
package com.genwoxue.broadcastservice;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
public class MainActivity extends Activity {
private BroadcastReceiverUtil util=null;
private Button btnSend=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSend=(Button)super.findViewById(R.id.send);
btnSend.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
//傳送廣播:其Action為“com.genwoxue.action.ABOUTSERVICE”
Intent intent=new Intent("com.genwoxue.action.ABOUTSERVICE");
MainActivity.this.sendBroadcast(intent);
//例項化廣播過濾器(只過濾其Action為"com.genwoxue.action.ABOUTSERVICE")
IntentFilter filter=new IntentFilter("com.genwoxue.action.ABOUTSERVICE");
//例項化廣播接收器(接收方)
util=new BroadcastReceiverUtil();
//註冊BroadcastReceiver:引數為接收器與過濾器
MainActivity.this.registerReceiver(util, filter);
}
});
}
@Override
protected void onStop(){
//停止廣播
super.unregisterReceiver(util);
super.onStop();
//停止服務
Intent intent=new Intent(MainActivity.this,ServiceUtil.class);
MainActivity.this.stopService(intent);
}
}
三、配置檔案
開啟“AndroidManifest.xml”檔案。
然後輸入以下程式碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.genwoxue.broadcastservice"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.genwoxue.broadcastservice.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.genwoxue.broadcastservice.ServiceUtil" />
</application>
</manifest>
注意:需要在AndroidManifest.xml檔案中新增<service...>:
<service android:name="com.genwoxue.broadcastservice.ServiceUtil" />
四、執行結果
Activity傳送廣播—>廣播接收方啟動Service服務
相關推薦
第92章、廣播之三通過廣播啟動服務(從零開始學Android)
Service(服務)在Android中地位是至關重要的,我們可以通過Activity與Broadcast(廣播)啟動Service(服務),我們本章學習如何通過廣播Broadcast啟動服務Service。 也許你會說,能用Activity啟動,幹嘛要用廣播呢?—
第3章、第一個“Hello,world!”之Android App(從零開始學Android)
幾乎所有中、英、法、德、美等版本的程式設計教材中,“hello,world!”程式總是作為開篇之作,可謂經典之中的經典!我本打算用“Hello,android!”替代它,但網上有240種語言都在寫這個“Hello,world!“,所以我想想之後,還是保留吧! 良好的
第25章、OnTouchListener觸控事件(從零開始學Android)
在Android App應用中,OnTouch事件表示觸控事件,本章我們通過滑過影象獲取當前位置理解其具體用法。 知識點:OnTouch 一、設計介面 1、首先把c.jpg圖片複製到res/drawable-hdpi資料夾內。 2、開啟“re
第52章、Bitmap影象處理(從零開始學Android)
1、Drawable → Bitmap public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawabl
從零開始學Android自定義View之動畫系列——屬性動畫(3)
屬性動畫對補間動畫進行了很大幅度的改進,之前補間動畫可以做到的屬性動畫也能做到,補間動畫做不到的現在屬性動畫也可以做到了。因此,今天我們就來學習一下屬性動畫的高階用法,看看如何實現一些補間動畫所無法實現的功能。 ValueAnimator的高階用法 補間
從零開始學Android之 AutoCompleteView 動態匹配輸入的內容(像搜尋引擎上的匹配)
1.AutoCompleteTextView屬性: 1>動態匹配輸入的內容 2>android:completionThreshold="n" -- 輸入n個字元開始匹配 在ac
從零開始學產品第五篇:三個環境,開發、測試和線上
本篇為【從零開始學產品】系列課第1章第4節 歡迎到公眾號選單欄,獲取產品經理課程更多資料 上節課我們說到了,Bug的生命週期,而只有在測試環境和線上環境發現的Bug,才會被稱之為Bug。 倒底什麼是測試環境,什麼是線上環境,
從零開始學 Web 之 CSS(三)連結偽類、背景、行高、盒子模型、浮動
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、連結偽類 a:
從零開始學 Web 之 DOM(三)innerText與innerHTML、自定義屬性
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、相容程式碼 1
從零開始學C++之IO流類庫(三):檔案的讀寫、二進位制檔案的讀寫、檔案隨機讀寫
#include <cassert>#include <iostream>#include <fstream>#include <string>using namespace std;struct Test { int a; int b; };i
【第四章】 資源 之 4.4 Resource萬用字元路徑 ——跟我學spring3
4.4.1 使用路徑萬用字元載入Resource 前面介紹的資源路徑都是非常簡單的一個路徑匹配一個資源,Spring還提供了一種更強大的Ant模式萬用字元匹配,從能一個路徑匹配一批資源。 Ant路徑萬用字元支援“?”、“*”、“**”,注意萬用字元匹配不包括目錄分隔符“/”:
《從零開始學Swift》學習筆記(Day 57)——Swift編碼規範之凝視規範:文件凝視、文檔凝視、代碼凝視、使用地標凝視
精品 -type mil 顯示 clas ber ansi tex text 原創文章。歡迎轉載。轉載請註明:關東升的博客 前面說到Swift凝視的語法有兩種:單行凝視(//)和多行凝視(/*...*/)。這裏來介紹一下他們的使用規範。 1、文件凝視文件凝視就在每個文
從零開始學 Web 之 BOM(三)offset,scroll,變速動畫函數
樣式 清理 java mar dde sof mov har width 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:
從零開始學 Web 之 JS 高級(三)apply與call,bind,閉包和沙箱
master 操作 console 概念 釋放 分享圖片 成功 num 命名沖突 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔
從零開始學 Web 之 Ajax(三)Ajax 概述,快速上手
lan 技術分享 php 概述 由於 val asc logs 更新 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht
從零開始學 Web 之 ES6(三)ES6基礎語法一
arr 方法 foreach reac 公眾 存在 lock 數組名 回調函數 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博
從零開始學 Web 之 Vue.js(三)Vue實例的生命周期
報錯 web 前端 cnblogs 前端 eth code vue 公眾 des 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔
一步一步實現web程式資訊管理系統之三----登陸業務邏輯實現(驗證碼功能+引數獲取)
本篇緊接著上一篇文章[一步一步實現web程式資訊管理系統之二----後臺框架實現跳轉登陸頁面] 驗證碼功能 一般驗證碼功能實現方式為,前端介面訪問一個url請求,後端服務程式碼生成一個圖片流返回至瀏覽器,瀏覽器通過img標籤來展示圖片資訊,其流程模式如下所示: 前端介面 前端介面需
【SpringMvc】從零開始學SpringMvc之實現使用者登入(三)
大家好,在前2篇中,我們實現了SpringMvc的配置和資料庫連線,這一篇我們來用html/ajax實現一個簡單的登入功能。 【SpringMvc】從零開始學SpringMvc之初始化(一) 【SpringMvc】從零開始學SpringMvc之資料庫(二) 準
設計模式之三:單例模式(餓漢式與懶漢式)
//保證類在記憶體中只有一個物件 package com.xjh.demo.designpattern.pattern3; public class Student { private Student(){ } //懶漢式 priva