我想使用广播接收器。我希望此接收器始终在后台运行,并检测何时启用或禁用 BT。我怎样才能创建这个?我不想要在后台运行的应用程序。我只想要接收器。也许我需要为此创建一个服务?
编辑:你不明白我的意思,我会解释:我只想要一个广播接收器,它总是在后台等待。我创建了设置广播接收器的活动,但是当我关闭活动时,广播接收器也会关闭。我希望 BroadcastReceiver 像服务一样。也许我需要创建一个包含广播接收器的服务?谢谢!
我想使用广播接收器。我希望此接收器始终在后台运行,并检测何时启用或禁用 BT。我怎样才能创建这个?我不想要在后台运行的应用程序。我只想要接收器。也许我需要为此创建一个服务?
编辑:你不明白我的意思,我会解释:我只想要一个广播接收器,它总是在后台等待。我创建了设置广播接收器的活动,但是当我关闭活动时,广播接收器也会关闭。我希望 BroadcastReceiver 像服务一样。也许我需要创建一个包含广播接收器的服务?谢谢!
假设您指的是BroadcastReceiver
. 您可以使用相同的意图过滤器来启动一个活动、服务,甚至是BroadcastReceiver
清单中的一个,如下所示:
<receiver android:name="MyScheduleReceiver" >
<intent-filter>
<action android:name="***your intent***" />
</intent-filter>
</receiver>
此示例适用于 BroadcastReceiver。另外,你可以发布你的代码吗?
这是一个关于广播接收器的很好的教程:vogella文章-AndroidBroadcastReceiver
如下图所示进行服务
public class DataService extends Service {
public static String BROADCAST_ACTION = "com.start";
Intent intent;
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
intent = new Intent(BROADCAST_ACTION);
sendBroadcast(intent);
stopSelf();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
对于启动服务,请执行以下操作:
startService(new Intent(MainActivity.this, DataService.class));
对于注册接收者:
registerReceiver(mHandleReceiver,new IntentFilter(LocationFindService.BROADCAST_ACTION));
private final BroadcastReceiver mHandleReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
};
您可以根据需要检查您的数据。停止服务
stopService(new Intent(MainActivity.this,DataService.class));
在清单文件中
<service android:name="com.trafficapp.service.DataService" > </service>
alarm = (AlarmManager) getSystemService(
Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
alarm.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), 1000, pintent);
registerReceiver(mHandleReceiver,
new IntentFilter(LocationFindService.BROADCAST_ACTION));
mHandleReceiver calls at every 1 second.