我有一個應用程序,它具有一個用作常規GUI的Activity和一個Service。我的活動有兩個按鈕。一個按鈕停止進程,另一個按鈕終止進程。我分別使用這些方法,來啓動和停止我的過程:Android:如何徹底殺死作爲後臺進程單獨運行的服務?
Intent i = null;
Button start;
Button stop;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
i = new Intent(this, Service.class);
start = (Button) findViewbyId(R.id.start_button);
stop = (Button) findViewById(R.id.stop_button);
start.setOnClickListener(new OnClickListener(){
public void onClick(){
startService(i);
}
}
stop.setOnClickListener(new OnClickListener(){
public void onClick(){
stopService(i);
}
}
}
這個服務沒有綁定到actvivty或應用程序。我在表現爲如此配置的服務:
<service
android:name="com.example.mypackage.Service"
android:process=":remote">
<intent-filter>
<action
android:name="com.example.mypackage.Service" />
</intent-filter>
</service>
當我啓動服務運行在它自己的獨立於其他任何東西。意思是,當我開始服務和onDestroy()
應用程序時,服務仍在運行。我可以看到它仍在運行,因爲通過adb
,我運行了ps
命令並且它表示它是。
問題是當我打電話stopService(intent)
。當我從活動端調用stopService(intent)
時,它將運行服務的onDestroy()
中設置的代碼行,但是當我運行ps
到adb
時,它表示它仍在運行。
我希望能夠完全銷燬服務。我不確定服務是如何工作的,所以請不要猶豫,去補救。我不確定它是否與我在服務中做的事情有關。謝謝!
編輯: 當我啓動服務,我用的是onStartCommand()
和運行一些代碼有它一定支持。我也從onStartCommand()
返回START_STICKY
。我也試過返回START_NOT_STICKY
,並且在我致電startService(intent)
後服務仍在運行。
你是如何開始你的服務,我在onStartCommand方法中猜測,你爲你的服務返回START_STICKY,爲什麼在你停止服務之後,它會重新開始,嘗試返回START_NOT_STICKY,希望這有助於你。 – user2652394
@ user2652394是的,我返回'START_STICKY' –
嗯......你在你的onDestroy方法中調用super.onDestroy()嗎? – MobileMon