我有一项启动和停止服务的活动。这似乎很简单,但如果我开始服务并停止它就可以了 但是当我重新启动服务时,我发现了两个服务实例 为什么呢?
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”并启动两项服务
我看到帖子建议但是当我在活动中停止时我的服务没有运行
答案 0 :(得分:0)
我强烈建议任何开发者阅读“四人帮”。在您的情况下,singleton设计确保一次只运行一个类的单个实例。通过defult,启动的服务应该只有一个实例,无论它启动多少次。这个标志Intent.FLAG_ACTIVITY_NEW_TASK它会出现另一个任务,即使其中一个已经运行。尝试删除标志,然后再将其作为单例,但是使服务成为单例不会对任何事情造成伤害(假设您需要一个实例)