防止多个服务实例

问题描述 投票:-1回答:1

我有一项启动和停止服务的活动。这似乎很简单,但如果我开始服务并停止它就可以了。 但是当我重新启动服务时,我发现了两个服务实例。 为什么?

 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”并启动两个服务

我看到帖子建议,但是当我停止活动时我的服务没有运行

android service
1个回答
0
投票

我强烈建议任何开发者阅读“四人帮”。在您的情况下,singleton设计确保一次只运行一个类的单个实例。通过defult,启动的服务应该只有一个实例,无论它启动多少次。这个标志Intent.FLAG_ACTIVITY_NEW_TASK它会出现另一个任务,即使其中一个已经运行。尝试删除标志,然后使其成为单身,但是使服务单身不会伤害任何东西(假设你想要一个实例)

© www.soinside.com 2019 - 2024. All rights reserved.