2013-03-24 49 views
1

我有一個必須啓動外部活動的服務。 我希望即使在啓動活動之後,該服務仍將繼續運行。問題在於onDestroy()被調用並且服務被終止。 這裏是我的代碼:爲什麼我的Android服務在我從它啓動一個活動時被殺死?

我如何從服務中啓動外部活動:

 Intent intent = new Intent(Intent.ACTION_DIAL);   
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

任何想法?

+1

添加您的日誌貓出 – minhaz 2013-03-24 19:51:14

+0

logcat沒有奇怪的消息。當我從一個服務中啓動一個活動時,該服務正在被殺死是否正常? – superbre 2013-03-24 20:00:16

回答

2

當我從服務內部啓動一項活動時,該服務正在被殺死是否正常?

服務沒有「死亡」。

您的服務將持續到:

  • 你叫stopService()引用的服務,或者
  • 的服務調用stopSelf(),或
  • 如果您使用的是結合模式,所有綁定(通過bindService())未綁定(通過unbindService())或
  • Android終止您的進程,例如由於內存條件不足或用戶請求

因此,您需要確定哪些條件爲真。沒有必要與開始一項活動有任何關係。

請注意,從服務開始活動通常不是一個好主意,特別是如果這可能發生在任意時間而不是基於用戶輸入。用戶不喜歡從不知情的地方出現的活動。

+0

感謝您的回覆。其實我的服務有3種不同的操作。其中之一是開始一項外部活動。只有最後一個操作調用服務上的onDestroy()。我通過包名啓動活動的完整代碼是: 意圖it = pm.getLaunchIntentForPackage(packageName); (null!= it){\t \t \t \t \t it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(it); } – superbre 2013-03-24 20:21:55

+0

@superbre:啓動活動*不會導致服務被破壞*。我答案中的四個子彈都是。您需要確定哪些特定事情正在發生。 – CommonsWare 2013-03-24 21:08:00

相關問題