如何在MainActivity上实现startService(i)

时间:2015-05-19 18:51:03

标签: java android android-intent

在while(true)语句中,我创建了一个intent,它将在onHandleIntent中运行一个case。但是,我无法使用startService(i)启动intent,而无需将Activity类扩展到LocationTracker类。当我做LocationTracker扩展Activity时,我能够使用startService(i)但是应用程序会中断并停止工作。我收到错误“Activity已泄露服务连接”。反正有没有绕过这个?我需要的方法在BackgroundService类中是私有的,而我的MainScreen扩展活动使用相同的代码片段来启动服务。是我同时运行两个意图,如果有的话,我可以在我的其他类中调用私有方法吗?

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");}

1 个答案:

答案 0 :(得分:2)

startService()方法来自Context类,看起来你有一个参考。请尝试以下方法:

mContext.startService(i);

Context中没有Activity的情况下工作的原因是Activity扩展Context并通过继承获取该方法。