下面列出了android.app.Service#onDestroy ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 停止某个插件Service, 当全部的插件Service都停止之后, ProxyService也会停止
*
* @param targetIntent targetIntent
* @return int
*/
int stopService(Intent targetIntent) {
ServiceInfo serviceInfo = selectPluginService(targetIntent);
if (serviceInfo == null) {
Log.e(TAG, "can not found service: " + targetIntent.getComponent());
return 0;
}
Service service = mServiceMap.get(serviceInfo.name);
if (service == null) {
Log.w(TAG, "can not running, are you stopped it multi-times?");
return 0;
}
service.onDestroy();
mServiceMap.remove(serviceInfo.name);
if (mServiceMap.isEmpty()) {
// 没有Service了, 这个没有必要存在了
Log.d(TAG, "service all stopped, stop proxy");
Context appContext = MApplication.getInstance();
appContext.stopService(new Intent().setComponent(new ComponentName(appContext.getPackageName(), PluginProxyService.class.getName())));
}
return 1;
}
/**
* 停止某个插件Service, 当全部的插件Service都停止之后, ProxyService也会停止
* @param targetIntent
* @return
*/
public int stopService(Intent targetIntent) {
ServiceInfo serviceInfo = selectPluginService(targetIntent);
if (serviceInfo == null) {
Log.w(TAG, "can not found service: " + targetIntent.getComponent());
return 0;
}
Service service = mServiceMap.get(serviceInfo.name);
if (service == null) {
Log.w(TAG, "can not runnning, are you stopped it multi-times?");
return 0;
}
service.onDestroy();
mServiceMap.remove(serviceInfo.name);
if (mServiceMap.isEmpty()) {
// 没有Service了, 这个没有必要存在了
Log.d(TAG, "service all stopped, stop proxy");
Context appContext = UPFApplication.getContext();
appContext.stopService(new Intent().setComponent(new ComponentName(appContext.getPackageName(), ProxyService.class.getName())));
}
return 1;
}
/**
* 停止某个插件Service, 当全部的插件Service都停止之后, ProxyService也会停止
*
* @param targetIntent targetIntent
* @return int
*/
public int stopService(Intent targetIntent) {
ServiceInfo serviceInfo = selectPluginService(targetIntent);
if (serviceInfo == null) {
Log.w(TAG, "can not found service: " + targetIntent.getComponent());
return 0;
}
String processName3 = ProcessUtil.getProcessNameViaManager(MApplication.getInstance());
Log.d(TAG, "3processName:" + processName3);
Log.d(TAG, "3mServiceMap.size:" + mServiceMap.size());
Log.d(TAG, "3mServiceMap.get(serviceInfo.name):" + serviceInfo.name);
Service service = mServiceMap.get(serviceInfo.name);
if (service == null) {
Log.w(TAG, "can not runnning, are you stopped it multi-times?");
return 0;
}
service.onDestroy();
mServiceMap.remove(serviceInfo.name);
if (mServiceMap.isEmpty()) {
// 没有Service了, 这个没有必要存在了
Log.d(TAG, "service all stopped, stop proxy");
Context appContext = MApplication.getInstance();
appContext.stopService(new Intent().setComponent(new ComponentName(appContext.getPackageName(), PluginProxyService.class.getName())));
}
return 1;
}
private void handleOnDestroyOne(ServiceInfo targetInfo) {
Service service = (Service) this.mNameService.get(targetInfo.name);
if (service != null) {
service.onDestroy();
this.mNameService.remove(targetInfo.name);
Object token = findTokenByService(service);
this.mTokenServices.remove(token);
this.mServiceTaskIds.remove(token);
QueuedWorkCompat.waitToFinish();
ApkManager.getInstance().onServiceDestory(null, targetInfo);
}
QueuedWorkCompat.waitToFinish();
}
public void onDestroy() {
for (Service service : this.mTokenServices.values()) {
service.onDestroy();
}
this.mTokenServices.clear();
this.mServiceTaskIds.clear();
this.mNameService.clear();
QueuedWorkCompat.waitToFinish();
}
private void handleOnDestroyOne(ServiceInfo targetInfo) {
Service service = mNameService.get(targetInfo.name);
if (service != null) {
service.onDestroy();
mNameService.remove(targetInfo.name);
Object token = findTokenByService(service);
mTokenServices.remove(token);
mServiceTaskIds.remove(token);
service = null;
QueuedWorkCompat.waitToFinish();
PluginManager.getInstance().onServiceDestory(null, targetInfo);
}
QueuedWorkCompat.waitToFinish();
}
public void onDestroy() {
for (Service service : mTokenServices.values()) {
service.onDestroy();
}
mTokenServices.clear();
mServiceTaskIds.clear();
mNameService.clear();
QueuedWorkCompat.waitToFinish();
}
static void destroyService(final Service service) {
unregisterComponentCallbacks(service.getApplication(), service);
try {
final long start = Debug.threadCpuTimeNanos();
service.onDestroy();
logExcessiveElapse(start, 5, service, ".onDestroy()");
} catch (final RuntimeException e) {
Log.e(TAG, "Error destroying " + service, e);
}
}