如何防止再次服务运行,如果已经运行Android(how to prevent service to

2019-07-29 13:11发布

在点击按钮我想用方法来启动服务startService(new Intent(currentActivity.this,MyService.class))但如果服务正在运行,我不想调用此方法来避免运行服务,已经running.How这是possible.I我在同一个项目中同时使用意向的服务服务 ,并希望申请相同的条件下两个。

Answer 1:

服务将只运行一次,所以你可以调用startService(Intent)多次。

您将收到onStartCommand()的服务。 所以记住这一点。

来源:注意多个呼叫Context.startService()不嵌套(尽管也导致他们在多个相应的调用onStartCommand()所以无论多少次启动一个服务将被停止一次Context.stopService()stopSelf()被调用; 然而,服务可以使用他们的stopSelf(int)方法,以确保服务不会停止,直到开始的意图已被处理。

在: http://developer.android.com/reference/android/app/Service.html的话题:服务生命周期



Answer 2:

使用startService() 启动服务将调用onStartCommand()如果该服务还没有开始,它会调用onCreate() 初始化变量和/或启动一个线程onCreate()



Answer 3:

绑定您服务; 开始呼叫时:

Intent bindIntent = new Intent(this,ServiceTask.class);
    startService(bindIntent);
    bindService(bindIntent,mConnection,0);

那就要检查一下,如果你的服务工作,请使用类似的方法:

    public static boolean isServiceRunning(String serviceClassName){ 
             final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);     
             final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);      
           for (RunningServiceInfo runningServiceInfo : services) {         
             if (runningServiceInfo.service.getClassName().equals(serviceClassName)){             
                return true;         
             }     
           }     
         return false; 
        }


Answer 4:

每当我们从任何活动启动任何服务,Android系统调用服务的onStartCommand()方法,如果该服务尚未运行,系统首先调用的onCreate(),然后调用onStartCommand()。

所以想说的是,Android的服务开始的仅在其生命周期中一次,保持运行,直到stopped.if任何其他客户端要再次启动它,然后只onStartCommand()方法调用将所有的时间。



文章来源: how to prevent service to run again if already running android