BroadcastReceiver+Service .开机启动服务

来源:互联网 发布:电信4g网络差 编辑:程序博客网 时间:2024/05/17 02:02
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("显示第二个通知")                //点击通知跳转到程序//                .setContentIntent(PendingIntent.getActivity(this, 0,//                        new Intent(this, MainActivity.class), 0))//                .setAutoCancel(true)//打开程序后图标消失                .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" />
阅读全文
0 0
原创粉丝点击