public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver" ;
private static final String ACTION = "android.media.AUDIO_BECOMING_NOISY" ;
@Override
public void onReceive (Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
Intent service = new Intent(context, MyService.class);
context.startService(service);
}
}
}
1## 首先注册个广播接受者指定要跳转的服务。
public class MyService extends Service {
private static final String TAG = "MyService" ;
/**
* 绑定服务时才会调用
* 必须要实现的方法
*/
@Nullable
@Override
public IBinder onBind (Intent intent) {
return null ;
}
/**
* 首次创建服务时,系统将调用此方法来执行一次性设置程序
* (在调用 onStartCommand() 或 onBind() 之前)。
* 如果服务已在运行,则不会调用此方法。该方法只被调用一次
*/
@RequiresApi (api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCreate () {
super .onCreate();
Log.i(TAG, "这里是消息通知栏" );
Notification notification = new Notification.Builder(this )
.setContentTitle("有新消息啦!" )
.setContentText("这里是ContentText" )
.setTicker("显示第二个通知" )
.setSmallIcon(R.mipmap.ic_launcher)
.build();
startForeground(1 , notification);
}
/**
* 每次通过startService()方法启动Service时都会被回调。
*/
@Override
public int onStartCommand (final Intent intent, int flags, final int startId) {
Log.i(TAG, "onStartCommand called." );
return super .onStartCommand(intent, flags, startId);
}
/**
* 服务销毁时的回调
*/
@Override
public void onDestroy () {
super .onDestroy();
Log.i(TAG, "onDestroy() executed" );
}
/**
* 创建Binder对象,返回给客户端即Activity使用,提供数据交换的接口
*/
public class MyBinder extends Binder {
void startDownload() {
new Thread(new Runnable() {
@Override
public void run () {
Log.i(TAG, "startDownload() executed" );
}
}).start();
}
}
}
2 ##这是自定义的服务内容,仅仅一个前台服务而已
<receiver android:name =".MyBroadcastReceiver" >
<intent-filter android:priority ="1000" >
<action android:name ="android.intent.action.BOOT_COMPLETED" />
<action android:name ="android.media.AUDIO_BECOMING_NOISY" />
</intent-filter >
</receiver >
<service android:name =".MyService" />
3 ##在Manifest.xml文件里注册广播和服务,并添加权限
<uses-permission android:name ="android.permission.RECEIVE_BOOT_COMPLETED" />