0
我知道我可以使用正在进行的通知让我的服务保持活动状态,但我有一个持有广播接收器的服务。我不想使用通知来简单地握住我的广播接收器。我知道我也可以在我的应用程序的清单中注册我的接收器,但我希望用户能够控制接收器是否处于活动状态。如何在没有正在进行通知的情况下让服务保持活跃状态
以下是不断重新启动的服务。
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和其他服务如何不被关闭?除非我不知道它导致它没有吐司消息?或者有没有办法只运行一次创建?
好无论如何,谢谢大家的期待!希望有人能更好地教育我! :)
编辑:新方法想知道这是正确的吗?
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();
}
});
我编辑了我的问题,是新的编辑方式吗?它似乎在工作。我在我的Manifest中激活它,它似乎是用按钮来完成这项工作。只是想知道我的语法和位置是否正确。我确实将“0”更改为“-1”,看起来更平滑。 – Seth 2013-03-19 18:41:21
@Seth:无论你看到它,你都可以摆脱'getApplicationContext()'。我不知道'finish()'是否有必要,这取决于你想要做什么。 – CommonsWare 2013-03-19 18:57:16
我在按钮上点击'finish()',使用户不必手动按下后退按钮或主页按钮即可离开我的活动。只是试图为用户删除不需要的步骤。由于没有Context参数,所以当我删除'getApplicationContext()'时会出错。这就是eclipse所说的“ComponentName(Context,)”它适用于我包含'getApplicationContext()'时是否还有别的东西我应该使用呢? –
Seth
2013-03-19 19:29:06