我不會使用android:process屬性 - 這實際上運行在一個獨立的進程服務,並使得它很難做這樣的事情份額的偏好。當您的應用程序停止運行時,您不必擔心服務會死掉,服務將繼續運行(這是服務的重點)。您也不需要綁定服務,因爲綁定會啓動並死掉。話雖這麼說:
<service
android:enabled="true"
android:exported="true"
android:name=".MyService"
android:label="@string/my_service_label"
android:description="@string/my_service_description"
<intent-filter>
<action android:name="com.package.name.START_SERVICE" />
</intent-filter>
</service>
您可以定義自己的意圖來啓動服務行動(不能被系統啓動 - 必須是一個活動)。我喜歡設置爲「Enabled」爲true,因此該系統可以實例我的服務,和「出口」,讓其他應用可以發送意圖和我的服務進行交互。你可以找到更多關於這個here。
您還可以使用綁定,如果你這樣做只是爲了粘合劑中添加和意圖,如長時間運行的服務:
<action android:name="com.package.name.IRemoteConnection" />
我們瞭解您的活動啓動服務:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent serviceIntent = new Intent("com.package.name.START_SERVICE");
this.startService(serviceIntent);
// You can finish your activity here or keep going...
}
}
現在的服務:
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
// This is triggered by the binder action intent.
// You can return your binder here if you want...
return null;
}
@Override
public void onCreate() {
// Called when your service is first created.
}
@Override
public in onStartCommand(Intent intent, int flags, int startId) {
// This is triggered by the service action start intent
return super.onStartCommand(intent, flags, startId);
}
}
現在您的服務應該運行。爲了幫助延長壽命,有一些技巧。使其運行作爲前臺服務(你在服務做到這一點) - 這將讓你創建一個在狀態欄中堅持一個通知圖標。同時保持你的HEAP燈亮,讓你的應用程序不太可能被Android殺死。
此外,該服務在殺死DVM時被殺死 - 因此,如果您打算進入設置 - >應用程序並停止應用程序,則正在殺死DVM並因此終止服務。僅僅因爲你看到你的應用程序在設置中運行並不意味着Activity正在運行。活動和服務具有不同的生命週期,但可以共享DVM。請記住,如果不需要,您不必殺死您的活動,只需讓Android處理它即可。
希望這會有所幫助。
我有同樣的問題。 您是否找到解決方案? – Mixer 2015-01-22 21:48:59