Android: How to determine if IntentService is running?

I have an activity to download with which I call the Intent service. There I process the API request call.

I want the activity to know if the service is working or not to show the tag for download.

I tried to determine if the service is working:

public void startUploadServiceTask() {
    if (Util.isNetworkAvailable(mContext)) {

        if (!isMyServiceRunning(UploadDriveService.class)) {

                startService(new Intent(mContext,
                        UploadService.class));

            }
        } else {
            Toast.makeText(mContext,
                    "Service is already running.", Toast.LENGTH_SHORT)
                    .show();
        }
    } else {
        Toast.makeText(mContext,
                getString(R.string.please_check_internet_connection),
                Toast.LENGTH_SHORT).show();
    }
}



private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE)) {
        Log.e("ALL SERVICE", service.service.getClassName().toString());
        if (serviceClass.getName().equals(service.service.getClassName())) {

            return true;
        }
    }
    return false;
}

But in Activity Manager Running Service Info, I do not get the intent class service that I start, so it always costs false.

I used the answer to Broadcast calls for the API.

I even checked this code.

if(startService(someIntent) != null) { 
 Toast.makeText(getBaseContext(), "Service is already running",     Toast.LENGTH_SHORT).show();
} else {
 Toast.makeText(getBaseContext(), "There is no service running, starting     service..", Toast.LENGTH_SHORT).show();
} 

But in this code, when checking the service, it starts the service again, so the service is called twice.

Please help me with this.

+4
2

IntentService onHandleIntent() Intent, IntentService "", ( , ),

, IntentService , (, , stopSelf() )

:
IntentService.
public static boolean isIntentServiceRunning = false;

@Override    
     protected void onHandleIntent(Intent workIntent) { 
        if(!isIntentServiceRunning) {
         isIntentServiceRunning = true;
       }
      //Your other code here for processing request
 }

onDestroy() IntentService, , isIntentServiceRunning = false;

isIntentServiceRunning, , IntentService!

+6

Activity. , .

. , onHandleIntent() .

, - , .

.

+1

All Articles