我有一个public class Tracking extends Service女巫,它是从几乎每一个活动中调用的,具有这样的功能:
Intent serviceIntent = new Intent(this, Tracking.class);
serviceIntent.putExtra("name", "Tabla3b Kras");
serviceIntent.putExtra("time", TimeGenerator.getTime());
startService(serviceIntent);这很好,public void onCreate()只被称为第一时间,而public int onStartCommand(Intent intent, int flags, int startId)则是每隔一次调用一次。我的问题是当用户关闭应用程序时。让我们说,双回按或进入开放的应用程序列表,并驳回它。我得到了一个“不幸的是,”名称已经停止工作。
我知道我可以在onStop()中关闭服务,但是由于我是从几乎所有的活动中调用服务,所以我必须在所有这些活动中实现onStop()吗?还是仅仅在MainActivity.java中这样做就足够了?如果用户在活动之间发生变化,服务会停止吗?
发布于 2018-08-06 10:19:09
服务是一个后台过程。它并不意味着从每一项活动开始/停止。
onBackPress().时停止一次服务然后如何将变量从其他活动传递给服务?
有几种方法可以在活动和服务之间进行通信。
如果你问我的喜好,我以前使用过BroadcastReceiver & Binder。但是现在我使用EventBus。您可以在EventBus文档中简化实现步骤。
建议:
检查您的服务是否已在运行。如果没有运行,则在使用之前启动服务。
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}https://stackoverflow.com/questions/51705256
复制相似问题