我知道我可以使用持续通知来保持我的服务处于活动状态,但我有一个服务正在持有广播接收器。我不想使用通知来简单地持有我的广播接收器。我也知道我可以在我的应用程序清单中注册我的接收器,但我希望用户能够控制接收器是否处于活动状态。
这是不断重启的服务。
public class DockServiceListener extends Service{
IntentFilter filter;
BroadcastReceiver mReceiver;
public void onCreate() {
super.onCreate();
Toast.makeText(getApplicationContext(), "Receiver started!", Toast.LENGTH_SHOR
filter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
mReceiver = new DockReceiver();
}
public int onStartCommand(Intent intent, int flags, int id) {
super.onStartCommand(intent, START_STICKY, id);
registerReceiver(mReceiver, filter);
return id;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
很简单。我也知道这可能是 android 清理,但 Facebook Messenger 和其他服务怎么没有被关闭?除非我只是不知道它,因为它没有吐司消息?或者有没有办法只运行一次 onCreate ?
无论如何,感谢大家观看!希望有人能更好地教育我!:)
编辑:新方法想知道这是否正确?
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName dockReceiver = new ComponentName(getApplicationContext(), DockReceiver.class);
pm.setComponentEnabledSetting(dockReceiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
finish();
}
});
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName dockReceiver = new ComponentName(getApplicationContext(), DockReceiver.class);
pm.setComponentEnabledSetting(dockReceiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
finish();
}
});