防止多个服务实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止多个服务实例相关的知识,希望对你有一定的参考价值。
我有一项启动和停止服务的活动。这似乎很简单,但如果我开始服务并停止它就可以了。 但是当我重新启动服务时,我发现了两个服务实例。 为什么?
public class Test extends AppCompatActivity implements View.OnClickListener {
@Override
public void onClick(View v) {
switch ( v.getId() ) {
case R.id.InitButton:
{
startMonitor();
}
break;
case R.id.EndButton:
{
stopMonitor();
}
break;
case R.id.SendData:
{
sendData();
}
break;
default:
break;
}
}
...
private void startMonitor(){
Intent intent = new Intent( this, MyService.class );
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startService( intent );
}
private void stopMonitor(){
Intent intent = new Intent( this, MyService.class );
stopService( intent );
}
如果我点击“initButton”服务启动 然后我点击“EndButton”和服务结束 然后我再次单击“initButton”并启动两个服务
我看到帖子建议,但是当我停止活动时我的服务没有运行
答案
我强烈建议任何开发者阅读“四人帮”。在您的情况下,singleton设计确保一次只运行一个类的单个实例。通过defult,启动的服务应该只有一个实例,无论它启动多少次。这个标志Intent.FLAG_ACTIVITY_NEW_TASK它会出现另一个任务,即使其中一个已经运行。尝试删除标志,然后使其成为单身,但是使服务单身不会伤害任何东西(假设你想要一个实例)
以上是关于防止多个服务实例的主要内容,如果未能解决你的问题,请参考以下文章