Android开机广播代码,android接受开机广播事件

package com.yin.servicetest;

import com.yin.service.MyService;

import android.app.ActivityManager;

import android.app.ActivityManager.RunningServiceInfo;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class MyReceiver extends BroadcastReceiver {

private final String TAG = MyReceiver.class.getSimpleName();

public MyReceiver() {

}

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {

Log.i(TAG, "监听到开机启动getAction");

}else if(intent.getAction().equals(Intent.ACTION_TIME_TICK)){

Log.i(TAG, "监听到TIME_TICK");

boolean isServiceRunning = false;

ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

for (RunningServiceInfo service :manager.getRunningServices(Integer.MAX_VALUE)) {

if("com.yin.service.MyService".equals(service.service.getClassName()))

//Service的类名

{

isServiceRunning = true;

Log.i(TAG, "已经启动");

}

}

if (!isServiceRunning) {

Intent i = new Intent(context, MyService.class);

context.startService(i);

Log.i(TAG, "没有启动,现在启动");

}

}else {

Log.i(TAG, "监听到其他");

}

}

}

资源下载此资源下载价格为3D币,请先登录

资源文件列表

no.txt , 36

Android中的开机广播(BOOT_COMPLETED)是在系统启动完成后发送的一个系统广播。当设备启动完成后,系统会广播一个有序的 Intent,其中包含一个动作字符串 android.intent.action.BOOT_COMPLETED。应用程序可以注册接收这个广播广播接收器(BroadcastReceiver),以便在设备启动完成时执行一些初始化操作,比如启动一个服务或者执行一些后台任务。 ANR(Application Not Responding)问题是Android系统对于用户界面响应性的一种保护机制。当应用程序在UI线程(主线程)中执行耗时操作时,如果操作超过一定的时间(通常为5秒),系统会弹出一个对话框,提示用户应用程序无响应,并提供“等待”和“关闭应用”两个选项。 在处理开机广播时如果发生ANR问题,通常是因为在BroadcastReceiver中执行了耗时的初始化操作。由于开机广播是系统在启动完成后发送的,如果在此处进行大量的数据加载、文件操作或者其他需要较长时间的操作,就会导致ANR。 为了防止在处理开机广播时发生ANR问题,可以采取以下策略: 1. 尽量将耗时操作放在后台线程中执行,避免在主线程中直接进行耗时操作。 2. 使用IntentService来处理耗时的后台任务,IntentService可以在单独的线程中执行任务,并且当所有任务完成后自行停止。 3. 如果确实需要在BroadcastReceiver中执行一些操作,可以考虑使用 AlarmManager 设置稍后执行的任务,或者使用 WorkManager 来处理更为复杂的后台任务调度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值