我被阻止了幾天,無法找到答案。RemoteService - 關閉啓動後重新啓動活動
我從一個Activity開始一個遠程服務。開始服務後,我關閉啓動活動。 我從任務管理器中關閉了主Activity,如下所示:home_btn長按,顯示打開的應用程序列表,然後向左滑動到主Activity上。
發生的事情是我的服務重新啓動!即使認爲它是一個遠程服務,它擁有自己的進程,並不依賴於啓動活動!
所有的內部變量將被重置,我不想這樣做。
- 我不希望使用useForeground()方法,因爲我不希望我的服務是在通知可見
我現在開始這樣的遠程服務和服務啓動(我可以看到它在菜單設置 - > Apps->標籤中運行):
btnStartSrv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startService(new Intent("com.example.servicerst_tst.RemoteService"));
}
});
Android清單XML看起來是這樣的:
<service android:name="com.example.servicerst_tst.RemoteService"
android:process=":serviceTST" >
<intent-filter>
<action android:name="com.example.servicerst_tst.RemoteService" >
</action>
</intent-filter>
</service>
服務類:
public class RemoteService extends Service{
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
我看到服務重新啓動或重新設置..在DDMS中。 當關閉主Activity時,服務從DDMS中的列表中消失,並在大約2秒內自行啓動。這也可以在服務中看到。如果您放置一些在服務生命週期中發生變化的內部變量。它們將被重置,就像服務在關閉主Activity之後自行重啓一樣。
我只想讓我的服務不重置,重新啓動時我關閉主發射器活動。 如果用戶關閉啓動器活動,從任務管理器或他的錯誤,我希望服務在後臺運行。
我在這裏做錯了什麼或從代碼中丟失了一些東西以防止重新啓動? 爲什麼重置服務?
它實際上在做什麼嗎?你爲什麼擔心它重新啓動?任何操作系統在需要時都可以關閉(以節省內存,電力等)。 –
目前它沒有做一件事,但你可以在其中放入幾件東西並以同樣的方式重新開始。 我試圖儘量減少最簡單的服務形式的例子。 我在服務中設置了一些變量,並且還啓動了一些線程,結果與這種簡單的服務形式相同。我不希望服務重新啓動。 正如我所說的,我不希望用戶關閉從任務管理器啓動Activity並重新啓動我的服務。 我該如何避免這個重新啓動問題? – marisxanis
假設用戶重新啓動手機。你將如何防止服務被殺?改變你對這個問題的看法。當你的服務退出時,將狀態保存到永久存儲器。重新啓動時,加載狀態。 –