2015-01-21 90 views
2

我想用在后台无限期地运行下去,并调用的方法每10分钟 甚至被杀应用如何每10分钟在后台运行服务?

其运行的服务如何建立呢?

+0

可能重复http://stackoverflow.com/questions/8230606/android -run-thread-in-service-every-x-seconds) – duggu 2015-01-21 08:19:04

+0

请问为什么?我问的原因是因为Android很多次,你有多种方式来做同样的事情。 – 2015-01-21 08:35:07

回答

0

假设你有一个正在运行服务

用户AlarmManager每10分钟运行一次服务

AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, YourService.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 600000, pi); // Millisec * Second * Minute 
    } 
+0

'RTC_WAKEUP'不适用于'服务'。您将不得不使用'WakefulBroadcastReceiver'来做到这一点 – NinjaCoder 2017-11-09 03:06:14

+0

请解释一下,它是通过报警管理器启动待定意图并验证并正常工作。但是自从最初在Android上发布很多东西以来,它已经有2年了。 – 2017-11-09 05:07:43

0

你可以写一个后台服务: Running in a Background Service

,并启动服务每10-11分钟(的AlarmManager省电行为的原因),或者确切时间(需要shedule每次下一次执行)与AlarmManager.setExact

例子:

private static PendingIntent createClockIntent(Context context) { 
     Intent intent = new Intent(context.getString(R.string.widget_broadcast_clock_update)); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 1, 
       intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     return pendingIntent; 
    } 

    public static void startClockAlarm(Context context) { 
     AlarmManager alarmManager = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     clockIntent = createClockIntent(context); 
     alarmManager.setRepeating(AlarmManager.RTC, 0, 
       600000, clockIntent); 
    } 
6

您可以通过如下

用做服务

这项服务将得到自动启动即使应用程序被打死,并postdelayed将运行[服务的Android运行的线程每隔X秒](的

+2

使用Handler内部服务安全吗? – ralphgabb 2017-03-17 05:42:50

+0

不适用于我,我可能会错过什么? – Binsoi 2017-09-22 02:37:54