11.2. BootReceiver
优质
小牛编辑
128浏览
2023-12-01
11.2.BootReceiver
在Yamba中,UpdaterService负责在后台定期抓取数据。但现在只能在打开应用之后,让用户在菜单中选择Start Service手工启动它才会开始执行。这样显然是不友好的。
如果能让UpdaterService随着系统启动而自动启动,那就可以省去用户的手工操作了。为此,我们将新建一个Broadcast Receiver用以响应系统启动的事件,即BootReceiver,并由它负责启动UpdaterService。BootReciever的代码只有如下几行:
例 11.1. BootReceiver.java
package com.marakana.yamba6;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BootReceiver extends BroadcastReceiver { //
@Override
public void onReceive(Context context, Intent intent) { //
context.startService(new Intent(context, UpdaterService.class)); //
Log.d("BootReceiver", "onReceived");
}
}
- BootReceiver继承自BroadcastReceiver,它是所有Receiver的基类。
- 我们只需实现一个方法,那就是onReceive()。它将在收到符合过滤规则的Intent时触发。
- 通过Intent启动UpdaterService。onReceive()在触发时可以得到一个Context对象,我们将它原样传给UpdaterService。对现在的UpdaterService而言,这个Context对象并不是必需的,但稍后我们就能够发现它的重要性。
到这里,我们已经实现了BootReceiver,但还没有将它注册到系统,因此仍无法响应来自系统的事件。