无论我的Android应用是在运行还是关闭,我都要求保持服务运行(获取最新的位置更新)。
我最终为此目的使用了基于通知的前台服务,除非直到应用程序关闭,否则它可以很好地完成这项工作。 那么会发生什么:
现在,我想了解该服务是由我的应用程序还是由Android操作系统启动的。有什么方法可以搞清楚吗?
我尝试了以下方法,但问题是intent
在服务启动时并不总是为空。
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(Constants.TAG + this.getClass().getSimpleName(), "Inside onStartCommand");
if (null == intent) {
Log.w(Constants.TAG, "Service was stopped and automatically restarted by the system.");
BackgroundTaskHandler.startLocationMonitorServiceBySelf(this, 20 * 1000); // start after 20 sec
Log.w(Constants.TAG, "Stopped self. Restarting again via alarm.");
stopSelf();
} else {
// Other piece of code to setup location client
// and configure notification intent
}
return START_STICKY;
}
答案 0 :(得分:0)
您可以更具体地检查intent是否包含活动的额外设置,而不是检查intent是否为null。
在您的活动中:
Intent intent = new Intent(mContext, YourService.class);
intent.putExtra("IntentFlag", "MainActivity");
在您的服务中:
if (intent.getStringExtra("IntentFlag").equals("MainActivity"))
{
//Service started by activity
}
希望这有帮助!