Android 保持服务运行
有谁能告诉我,当用户关闭服务时,如何保持服务始终运行或重新启动服务?我看到facebook服务在我清除记忆后重新启动。Android 保持服务运行,android,service,Android,Service,有谁能告诉我,当用户关闭服务时,如何保持服务始终运行或重新启动服务?我看到facebook服务在我清除记忆后重新启动。 我不想做ForegroundServices。我从我以前在应用程序中使用的服务复制了这个 重要的是不要更新任何UI。因为您在服务中没有用户界面。这也适用于祝酒 祝你好运 public class nasserservice extends Service { private static long UPDATE_INTERVAL = 1*5*1000; //defau
我不想做ForegroundServices。我从我以前在应用程序中使用的服务复制了这个 重要的是不要更新任何UI。因为您在服务中没有用户界面。这也适用于祝酒 祝你好运
public class nasserservice extends Service {
private static long UPDATE_INTERVAL = 1*5*1000; //default
private static Timer timer = new Timer();
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate(){
super.onCreate();
_startService();
}
private void _startService()
{
timer.scheduleAtFixedRate(
new TimerTask() {
public void run() {
doServiceWork();
}
}, 1000,UPDATE_INTERVAL);
Log.i(getClass().getSimpleName(), "FileScannerService Timer started....");
}
private void doServiceWork()
{
//do something wotever you want
//like reading file or getting data from network
try {
}
catch (Exception e) {
}
}
private void _shutdownService()
{
if (timer != null) timer.cancel();
Log.i(getClass().getSimpleName(), "Timer stopped...");
}
@Override
public void onDestroy()
{
super.onDestroy();
_shutdownService();
// if (MAIN_ACTIVITY != null) Log.d(getClass().getSimpleName(), "FileScannerService stopped");
}
}
您应该创建一个粘性服务。阅读更多关于它的信息 可以通过在onStartCommand中返回START\u STICKY来完成此操作
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("LocalService", "Received start id " + startId + ": " + intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
另请阅读关于“应用程序是否应始终保持运行”的内容。这是更麻烦的-系统将尽量不杀死你的应用程序,这将影响系统中的其他人,你应该小心使用它 很抱歉,刚才的评论。答案是肯定的。这对我来说似乎没有什么区别;它没有阻止服务被终止,也没有导致服务被终止后重新启动。我认为计时器不会被垃圾收集,因为它是不同的线程,线程一直在运行,持有对服务本身的引用。我想知道为什么这个解决方案对你不起作用@Sam?@HendraWijayaDjiono,我已经太长时间不记得我是如何测试它的了,所以我不确定!)我认为使用
application:persistent
不是一个好做法。我认为它真的可以增加电池。consumption@busylee你是对的。这对内存负载、电池消耗不利。希望这就是最后一段的内容。然而,我更喜欢得到/给出直接的答案,而不是建议。application:persistent
看起来很棒,但它对我在安卓4.3上没有任何影响。您好,我已经在onStartCommand中将标志设置为START\u STICKY,但进程仍然会在某个时间后关闭。如何解决此问题?此方法应调用super.onStartCommand(intent、flags、startId)以获取新API。您可以使用以下方法: