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"));
服务开始正常。但是,如果我去系统应用程序管理器,然后停止应用程序,服务也会终止。
我希望即使应用程序终止也能保持服务正常运行。我怎么能这样做?
答案 0 :(得分:2)
我希望即使应用程序终止也能保持服务正常运行。我怎么能这样做?
你没有。如果用户终止您的应用,您的应用将被终止,期限。用户可以控制他们的Android设备,而不是你。
请尊重用户的意愿,尽量不构建用户想要强行停止,任务杀死或以其他方式摆脱的应用。
答案 1 :(得分:0)
您可以创建单独的应用程序并调用它或
,而不是服务您可以使用此链接中描述的AIDL创建单独的后台应用程序,而不是服务: http://developer.android.com/guide/components/aidl.html
请注意,AIDL应该注册一个通知,意图在完成后启动原始应用,并询问用户是否希望对其采取行动。
答案 2 :(得分:-1)
我期待&#34;服务&#34;意味着服务,而不是&#34;应用程序&#34;。我的意思是,我想要像#34;服务经理&#34;。但我忘记了Android中的应用程序设置是针对最终用户的,而不是编码器。
到目前为止,我得到了答案。