`

Service and Broadcast

阅读更多
Service and Broadcast

这里我们首先要说的是android的广播机制,它的形式是这样的:
应用程序或者系统服务向android操作系统注册一个BroadcastReceiver(广播接收器),并在这个BroadcastReceiver
中设置它想要接收的广播。这样子,一旦系统中出现了这样一个或一些广播(广播可以来自它自己或者其他应用程序),
就会查找是否有应用程序注册了receiver,如果有就通知它们,否则就什么都不做。
註冊廣播有種方式,一種是在代碼裏面,另外一種是在AndroidManifest.xml裏面。
一般推薦後者,因為易於代碼維護,有系統幫我們注冊和註銷。
下面使用代碼註冊和註銷廣播。

而Service的用途又是什麽?常常用来在后台进行一些长时间的操作,例如播放音乐,音频解码,下载数据等等。

參考代碼:

public class MyService extends Service {
//这一个是Service的接口,也是一个抽象方法
@Override
public IBinder onBind(Intent intent) {
return null;
}
//以下这些是Service的生命周期方法
//Service被创建
@Override
public void onCreate() {
// Code here
super.onCreate();
}

//Service被启动
@Override
public void onStart(Intent intent, int startId) {
/* 注册广播接收器 */
serviceReceiver = new ServiceReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(".MyService");
//可以add多個action
registerReceiver(serviceReceiver, filter);
super.onStart(intent, startId);
}

//Service被销毁
@Override
public void onDestroy() {
/* 取消注册的serviceReceiver*/
this.unregisterReceiver(serviceReceiver);
super.onDestroy();
}

//Service被暂停,挂起
public void onPause() {
//Code here
}

/* 繼承BroadcastReceiver,編寫自己的广播接收器 */
class ServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
                   //code here, do what u wanna do
}
}
}
}


另:在xml文件中註冊廣播如下。(將ServiceReceiver獨立成1個類)
<receiver android:name=".ServiceReceiver"> 
        <intent-filter> 
            <action android:name=".MyService" /> 
<!-- 可以有多個 -->
        </intent-filter>  
</receiver> 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics