我有这个描述服务的代码:
public class navigation_web extends Service {
Context context;
public void navigation() {
Cursor mCur = getContentResolver().query(Browser.BOOKMARKS_URI,
Browser.HISTORY_PROJECTION, null, null, null);
mCur.moveToFirst();
if (mCur.moveToFirst() && mCur.getCount() > 0) {
while (mCur.isAfterLast() == false) {
Log.v("titleIdx",
mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
Log.v("urlIdx",
mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX));
mCur.moveToNext();
}
}
// Browser.clearSearches(getContentResolver());
}
public void onCreate() {
// Browser.clearHistory(getContentResolver());
// Browser.clearSearches(getContentResolver());
navigation();
// super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
我可以使用
从活动中调用此服务startService(new Intent(Finalv2Activity.this, navigation_web.class));
但我想在调用它之后停止此运行服务,以便我可以再次调用它。我怎样才能做到这一点。感谢
答案 0 :(得分:36)
还有另一种称为stopService(Intent intent)
的方法。
在服务中,您可以致电stopSelf()
。
答案 1 :(得分:29)
使用活动stopService()方法:
stopService(new Intent(ActivityName.this, ServiceClassName.class));
答案 2 :(得分:4)
stopService(Intent intent)
是停止任何特定服务的方法
答案 3 :(得分:1)
android.os.Process.killProcess(android.os.Process.myPid());
答案 4 :(得分:0)
stopService(new Intent(YourActivity.this, ServiceClassName.class));
答案 5 :(得分:0)
补充@Makvin的答案。在服务之外停止服务
public static ActivityManager.RunningServiceInfo getRunningServiceInfo(Class serviceClass, Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return service;
}
}
return null;
}
之后
new Timer().schedule(new TimerTask() {
@Override
public void run() {
final ActivityManager.RunningServiceInfo serviceInfo = getRunningServiceInfo(service, c);
if (serviceInfo != null) {
android.os.Process.killProcess(serviceInfo.pid); //Stop the running service
}
}
}, 200);
我将killProcess放在另一个线程中,否则由于某种原因所有应用程序都被杀死。这样,当进程终止(不太糟糕)时,该应用程序将最小化,欢迎提出建议