2015-05-19 3 views
2

В операторе while (true) я создаю намерение, которое будет запускать случай в onHandleIntent. Однако я не могу начать свое намерение, используя startService (i), не увеличивая класс Activity до моего класса LocationTracker. Когда я делаю LocationTracker extends Activity, я могу использовать startService (i), но приложение ломается и перестает работать. Я получаю сообщение об ошибке «Активность просочилась в Service Connection». Есть ли способ обойти это? Метод, который мне нужен, является частным в классе BackgroundService, и моя активность MainScreen extends использует тот же фрагмент кода для запуска служб. Является ли это тем, что одновременно выполняю два намерения, если это так, я могу вызвать частный метод в моем другом классе?Как реализовать startService (i) not on MainActivity

public class LocationTracker{    
DSApi dsApi=new DSApi((ContextWrapper)mContext,null); 
if(dsApi.initialize(AppSettings.IP_ADDRESS,AppSettings.PORT,false)) {  
    interv = (int)dsApi.sendLocationInfo(l); 
    if (dsApi.needRemoteWipe()) { 
    while(true){ 
     Intent i = IntentFactory.getBackgroundService(); 
     i.putExtra(BackgroundService.EXTRA_OPERATION,BackgroundService.OPERATION_BACKUP); 
     startService(i);          
     AppSettings.addEventLog(EventLog.TYPE_BACKUP, "Data backed up");  
     break; 
     } 
    AppSettings.setRemoteWipe(true); 
    } 
     } 
Log.d("SendLocationTask", "finished");} 

ответ

2

startService() метод из Context класса, и кажется, что у вас есть ссылка на один. Попробуйте следующее:

mContext.startService(i); 

Причина, по которой работает без Context в Activity потому, что Activity расширяет Context и получает этот метод в порядке наследования.

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