目录
1 Service简介
Service 是 Android 中一种可以在后台执行长时间运行操作的组件,即使用户不和应用进行交互,Service 也可以继续运行。常见的用例包括播放音乐,下载文件等。
1.1 创建、配置Service
创建 Service 需要继承 Service 类并实现其方法。例如:
public class MyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 在此处执行后台任务
return super.onStartCommand(intent, flags, startId);
}
}
并在 AndroidManifest.xml 中声明:
<service android:name=".MyService"/>
1.2 启动和停止Service
可以通过 startService()
和 stopService()
或者 stopSelf()
来启动和停止 Service。例如:
Intent intent = new Intent(this, MyService.class);
startService(intent);
// 当服务不再需要时
stopService(intent);
// 或在服务内部调用
stopSelf();
1.3 绑定本地Service
可以通过 bindService()
和 unbindService()
来绑定和解绑 Service。绑定 Service 会返回一个 IBinder,可以通过它来调用 Service 中的方法。例如:
ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 调用服务的方法
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
bindService(intent, connection, BIND_AUTO_CREATE);
1.4 Service的生命周期
Service 的生命周期主要有两种模式:启动和绑定。在启动模式下,onCreate()
、onStartCommand()
、onDestroy()
是主要的生命周期方法。在绑定模式下,onCreate()
、onBind()
、onUnbind()
、onDestroy()
是主要的生命周期方法。
1.5 IntentService简介
IntentService 是 Service 的一个子类,它使用工作线程来处理所有启动请求。适用于不需要与用户交互,并且希望完成任务后自动停止的场景。例如:
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
// 在此处理后台任务
}
}
2 电话管理器
电话管理器(TelephonyManager)为访问与电话相关的状态提供了一组 API,包括电话信号和蜂窝网络信息、SIM 卡状态和订阅信息等。例如:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId(); // 需要 READ_PHONE_STATE 权限
3 短信管理器
Android 提供了 SmsManager 类,你可以使用它来发送短信。不过需要注意的是,发送短信需要 SEND_SMS 权限。例如:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
4 音频管理器
音频管理器(AudioManager)提供了一组管理音频和音量的 API,包括音量、模式(静音、震动等)和音频焦点等。例如:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
5 手机闹钟服务
AlarmManager 服务允许你在特定时间启动你的应用组件。常常与 PendingIntent 结合使用来启动一个 Service 或者发送一个广播。例如:
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent);
6 接收广播消息
6.1 BroadcastReceiver简介
BroadcastReceiver 是 Android 四大组件之一,它能接收来自系统、应用发出的广播消息。例如:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 在此处理接收到的广播
}
}
6.2 发送广播
可以通过 sendBroadcast()
、sendOrderedBroadcast()
、sendStickyBroadcast()
等方法发送广播。例如:
Intent intent = new Intent();
intent.setAction("com.example.MY_ACTION");
sendBroadcast(intent);
6.3 有序广播
有序广播是一种同步的广播,接收器按照优先级接收广播。可以通过 sendOrderedBroadcast()
来发送有序广播。例如:
Intent intent = new Intent();
intent.setAction("com.example.MY_ACTION");
sendOrderedBroadcast(intent, null);