无法终止在Android中创建的服务,它在stopService之后仍然运行。启动服务如下:
Intent i = new Intent(this, MyService.class);
startService(i);
Associated Manifest条目:
<service android:name=".services.MyService" ></service>
MyService的要点将持续存在于多个活动中,所以我没有使用IntentService:
package com.sample.app.services;
public class MyService extends Service {
public static final String TAG = MyService.class.getSimpleName();
private Handler handler;
protected void onHandleIntent(Intent intent) {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "MyService Intent... Start", Toast.LENGTH_LONG).show();
}
});
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
myProcessing();
// This will cause the service to hang around
return (START_STICKY);
}
@Override
public IBinder onBind(Intent intent) {
return (null);
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
在各种活动中甚至在上面的onDestroy()中尝试过,在super.onDestroy()之前;上面我尝试了以下内容:
Intent i = new Intent(this, MyService.class);
stopService(i);
MyService继续运行。我相信根据定义,服务是一个单身人士。
答案 0 :(得分:4)
如果你想停止服务,有两种方法可以做到,
1)在服务类中调用stopself()。
2)使用stopService()。
在你的情况下,说你的服务类是在一个不同的包中(即使它在同一个包中也没关系),你最好为你的服务使用一个意图过滤器,这样可以很容易地停止和启动像这样的服务以下。
<service android:name=".services.MyService" android:enabled="true">
<intent-filter android:label="@string/myService" >
<action android:name="custom.MY_SERVICE"/>
</intent-filter>
</service>
并将其添加到您的服务类
中public static final String ServiceIntent = "custom.MY_SERVICE"
然后您可以像下面一样启动或停止服务。
startService(new Intent(MyService.ServiceIntent));
stopService(new Intent((MyService.ServiceIntent));
希望这有用。三江源