在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");}
答案 0 :(得分:2)
startService()
方法来自Context
类,看起来你有一个参考。请尝试以下方法:
mContext.startService(i);
在Context
中没有Activity
的情况下工作的原因是Activity
扩展Context
并通过继承获取该方法。