2013-02-27 201 views
0

我有一個網絡應用程序,它使用服務連接到其他對等方。當您使用「最近的應用程序」關閉應用程序時,它只會關閉進程,而不是service,這實際上並不壞,因爲我想以這種方式。但是,下次用戶打開應用程序時會產生一些麻煩。它崩潰,所以用戶必須再次使用「Recent Apps」關閉up,然後再次嘗試使用該應用。問題肯定是正在運行的服務,因爲如果我在下次運行服務之前停止服務。它工作得很好!在應用程序啓動時停止已啓動的服務

其實這對我來說很奇怪,因爲我沒有在啓動時啓動另一個service。當用戶點擊一個按鈕時,我開始它。無論如何,如果可能的話,最好的方法是能夠使用正在運行的service,否則,我只想在我的應用程序啓動時停止服務。

我是新來的Android和我被困在這一點:(

感謝您的幫助

回答

0

服務框架:

public class MyService extends Service { 
public static final String TAG = "MyServiceTag"; 
... 
} 

這是開始活動的一部分:

processStartService(MyService.TAG);

private void processStartService(final String tag) { 
Intent intent = new Intent(getApplicationContext(), MyService.class); 
intent.addCategory(tag); 
startService(intent); 
} 

這是停止活動的一部分:

processStopService(MyService.TAG); 

private void processStopService(final String tag) { 
Intent intent = new Intent(getApplicationContext(), MyService.class); 
intent.addCategory(tag); 
stopService(intent); 
} 
+0

這種做法會導致停止服務,每次用戶離開應用程序。我想在應用程序關閉時停止它。我想如果我在服務內部檢查應用程序進程沒有運行,那麼我可以停止服務,這是有道理的。你怎麼看? – Peyman 2013-02-27 15:02:00

0

使用一個static對象這表明服務是否正在運行與否。

否則第二個選項,我發現How to check if a service is running on Android?

if(startService(someIntent) != null) { 
    Toast.makeText(getBaseContext(), 'Service is already running',Toast.LENGTH_SHORT).show(); 
}else { 
    Toast.makeText(getBaseContext(), 'There is no service running, starting service..', Toast.LENGTH_SHORT).show(); 
} 
+0

我做了類似的事情,但總比沒有好,但第一次用戶輸入應用程序時,它崩潰了,所以他應該在最近的應用程序中選擇它,它會工作,而如果我不這樣做。用戶必須關閉該應用程序,然後再次運行。所以我取得了一些成就,但這還不夠!它應該每次應用程序啓動時工作! – Peyman 2013-02-27 15:04:07

相關問題