服务的最佳实践——后台执行的定时任务
2015-01-12 23:27
162 查看
创建一个ServiceBestPractice项目,然后新增一个LongRunningService类,代码如下所示:
新建一个AlarmReceiver类,并让它继承自BroadcastReceiver,代码如下所示:
接下来我们需要在打开程序的时候启动一次LongRunningService,修改mainActivity中的代码,如下所示:
最后别忘了,我们用到的广播接收器和服务都要在AndroidManifest.xml中注册才行,代码如下所示:
package com.example.servicebestpractice; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.SystemClock; import android.util.Log; public class LongRunningService extends Service{ @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread(new Runnable() { @Override public void run() { Log.d("LongRunningService", "executed at " + new Date().toString()); } }).start(); AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); int anHour = 60 * 60 * 1000; //这是一小时的毫秒数 long triggerAtTime = SystemClock.elapsedRealtime() + anHour; Intent i = new Intent(this, AlarmReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0); manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi); return super.onStartCommand(intent, flags, startId); } }
新建一个AlarmReceiver类,并让它继承自BroadcastReceiver,代码如下所示:
package com.example.servicebestpractice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, LongRunningService.class); context.startService(i); } }
接下来我们需要在打开程序的时候启动一次LongRunningService,修改mainActivity中的代码,如下所示:
package com.example.servicebestpractice; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent i = new Intent(this, LongRunningService.class); startService(i); } }
最后别忘了,我们用到的广播接收器和服务都要在AndroidManifest.xml中注册才行,代码如下所示:
<service android:name=".LongRunningService"> </service> <receiver android:name=".AlarmReceiver"> </receiver>
相关文章推荐
- 第一行代码-9.6 服务的最佳实践--后台执行的定时任务
- 服务的最佳实践——后台执行的定时任务
- 服务的最佳实践——后台执行的定时任务
- Android中(Service )服务的最佳实践——后台执行的定时任务
- 服务的应用-后台执行的定时任务
- Android四大组件之service(二)——用service、scheduleAtFixedRate写一个后台定时执行任务
- ASP.NET后台定时执行任务
- 后台执行的定时任务
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件 .
- android service 后台执行定时任务
- SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务
- windows计划任务后台定时执行java的jar文件
- Windows 定时执行 服务与任务计划
- 使用HandlerThread实现后台服务轮询执行任务
- service的简单使用--后台执行的定时任务
- 四大组件之——service应用实例一(在后台执行定时任务)
- Seam集成的定时器应用_基于Seam框架的后台定时执行服务 .
- Sring核心技术与最佳实践- 9.2 集成任务调度服务
- 在Java中使用定时任务的最佳实践
- 在Java中使用定时任务的最佳实践