2014-09-08 16 views
0

Слишком много путаницы при запуске службы фона из-за активности, и я предоставляю код, который я использовал для запуска службы из активности.Как запустить службу из андроида?

private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    Log.v("Running activities", manager.toString()); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
if ("com.*.*.service.Service".equals(service.service.getClassName())) { 
    return true; 
     } 
    } 
    Log.v("Currently running services in andorid phone", "other services"); 
    return false; 
} 

Над кодом, чтобы проверить, является ли служба работает или not.If это не значит делаю это

if(isMyServiceRunning()) { 
          System.out.println("Service is running"); 
         } else { 
          System.out.println("Service is not running"); 
          Intent serviceIntent = new Intent(); 
          serviceIntent.setAction("com.*.*.service.Service"); 
          startService(serviceIntent); 
         } 

Предложите свои ответы и решения, чтобы решить эту проблему.

+0

В чем проблема с кодом? Вы получаете какое-либо исключение или ошибку? – aProgrammer

+0

См. Эту ссылку http://stackoverflow.com/questions/2334955/start-a-service-from-activity – aProgrammer

+0

Цель намерения = новое намерение (yourActivity.this, yourservice.class); \t \t yourActivity.this.startService (намерение); –

ответ

1

Если вы можете начать свой сервис используйте

public class YourService extends Service { 

public static boolean isRunning = false; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     isRunning = true; 
     return START_STICKY; 
    } 
} 

if(!YourService.isRunning){ 
    Intent intent = new Intent(this, YourService.class); 
    startService(intent); 

    Date date = new Date(System.currentTimeMillis()); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa"); 
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    Date dt = new Date(System.currentTimeMillis()); 
    String strTime = sdf.format(dt); 
    String strDate = dateFormat.format(date); 
} 

, а также определить

<service android:name="com.mypackagename.YourService"></service> 

в манифесте.

Если вы хотите запустить службу проверки или нет, используйте одну статическую переменную в сервисе и проверьте перед запуском службы. Если это false, тогда запустите службу.

+0

Я добавил в файл манифеста ''. –

+0

Это возможно или нет? 'Intent service = новый Intent(); \t \t \t \t \t service.setAction ("com. *. *. Service"); \t \t \t \t \t \t StartService (услуги); ' –

+0

@SabariKarthik вы даете полное имя пакета в файле манифеста ?? если нет, то укажите полное имя пакета. –

Смежные вопросы