Android - 如果应用程序终止,则终止远程服务

时间:2012-02-11 22:22:40

标签: android service

Android SDK说remote service在应用程序的另一个进程中运行。我认为这意味着如果应用程序停止/终止...,那么远程服务仍然在运行。但事实并非如此。

例如我有这个远程服务:

import java.util.Timer;
import java.util.TimerTask;

import android.app.Service;
import android.os.IBinder;
import android.util.Log;

public class WatchDogService extends Service {

  private Timer timer = new Timer();

  @Override
  public void onCreate() {
    Log.i(WatchDogService.class.getName(), "WatchDog start");

    timer.scheduleAtFixedRate(new TimerTask() {
      @Override
      public void run() {
        Log.i(WatchDogService.class.getName(), "WatchDog boo boo!!! ^^");
      }
    }, 0, 5000);
  }

  @Override
  public void onDestroy() {
    Log.i(WatchDogService.class.getName(), "WatchDog stop");
  }

  @Override
  public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i(WatchDogService.class.getName(), "WatchDog has just been called...");
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
  }
}

的AndroidManifest.xml:

<service
    android:name="WatchDogService"
    android:process=":remote" >
    <intent-filter>
        <action android:name="WatchDogService" />
    </intent-filter>
</service>

在另一项活动中,我称之为:

startService(new Intent("WatchDogService"));

服务开始正常。但是,如果我去系统应用程序管理器,然后停止应用程序,服务也会终止。

我希望即使应用程序终止也能保持服务正常运行。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

  

我希望即使应用程序终止也能保持服务正常运行。我怎么能这样做?

你没有。如果用户终止您的应用,您的应用将被终止,期限。用户可以控制他们的Android设备,而不是你。

请尊重用户的意愿,尽量不构建用户想要强行停止,任务杀死或以其他方式摆脱的应用。

答案 1 :(得分:0)

您可以创建单独的应用程序并调用它或

,而不是服务

您可以使用此链接中描述的AIDL创建单独的后台应用程序,而不是服务: http://developer.android.com/guide/components/aidl.html

请注意,AIDL应该注册一个通知,意图在完成后启动原始应用,并询问用户是否希望对其采取行动。

答案 2 :(得分:-1)

我期待&#34;服务&#34;意味着服务,而不是&#34;应用程序&#34;。我的意思是,我想要像#34;服务经理&#34;。但我忘记了Android中的应用程序设置是针对最终用户的,而不是编码器。

到目前为止,我得到了答案。