如何不在 MainActivity 上实现 startService(i)
How to implement startService(i) not on MainActivity
在 while(true) 语句中,我正在创建一个意图 运行 onHandleIntent 中的一个案例。但是,如果不将 Activity Class 扩展到我的 LocationTracker class,我无法使用 startService(i) 启动意图。当我执行 LocationTracker extends Activity 时,我可以使用 startService(i) 但应用程序中断并停止工作。我收到错误 "Activity has leaked Service Connection"。无论如何要解决这个问题?我确实需要的方法在 BackgroundService class 中是私有的,而我的 MainScreen extends activity 使用相同的代码片段来启动服务。是不是我同时 运行 宁两个意图,如果是这样,我可以在我的另一个 class 中调用私有方法吗?
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");}
startService()
方法来自Context
class,你好像参考了一个。请尝试以下操作:
mContext.startService(i);
它在 Activity
中没有 Context
的原因是因为 Activity
扩展 Context
并通过继承获得该方法。
在 while(true) 语句中,我正在创建一个意图 运行 onHandleIntent 中的一个案例。但是,如果不将 Activity Class 扩展到我的 LocationTracker class,我无法使用 startService(i) 启动意图。当我执行 LocationTracker extends Activity 时,我可以使用 startService(i) 但应用程序中断并停止工作。我收到错误 "Activity has leaked Service Connection"。无论如何要解决这个问题?我确实需要的方法在 BackgroundService class 中是私有的,而我的 MainScreen extends activity 使用相同的代码片段来启动服务。是不是我同时 运行 宁两个意图,如果是这样,我可以在我的另一个 class 中调用私有方法吗?
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");}
startService()
方法来自Context
class,你好像参考了一个。请尝试以下操作:
mContext.startService(i);
它在 Activity
中没有 Context
的原因是因为 Activity
扩展 Context
并通过继承获得该方法。