Android---Service Timer之执行周期任务
来源:互联网 发布:直播平台数据统计 编辑:程序博客网 时间:2024/06/05 17:28
我们有时候需要隔一段时间去做一件事,比如检查邮件,检查网络情况等等。本篇文章简单介绍下如何使用Service Timer 去执行周期任务,程序界面上显示一个数字,每隔一秒钟更新 ,每5秒钟显示一个toast。
1.自定义service
public class MyService extends Service { private static final long INTERVAL = 5 * 1000; private Handler handler = new Handler(); private Timer mTimer; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); // 如果已经存在,则先取消 if (mTimer != null) { mTimer.cancel(); } else { mTimer = new Timer(); } mTimer.scheduleAtFixedRate(new MyTimerTask(), 0, INTERVAL); } private class MyTimerTask extends TimerTask { @Override public void run() { // 新开一个线程执行 handler.post(runnable); } } private Runnable runnable = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), getTime(), Toast.LENGTH_SHORT).show(); } }; private String getTime() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); } @Override public void onDestroy() { super.onDestroy(); mTimer.cancel(); }}
2.activity_main.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.refreshdemo.MainActivity" > <TextView android:id="@+id/tvNum" android:layout_width="wrap_content" android:layout_height="wrap_content"/></RelativeLayout>
3.MainActivity.java
public class MainActivity extends Activity { private TextView tvNum; private int count = 0; // 计数 private Handler handler = new Handler(); private Intent serviceIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvNum = (TextView) findViewById(R.id.tvNum); tvNum.setText("0"); handler.postDelayed(runnable, 1000); serviceIntent = new Intent(this, MyService.class); this.startService(serviceIntent); } private Runnable runnable = new Runnable() { @Override public void run() { update(); handler.postDelayed(this, 1000); } }; private void update() { count++; tvNum.setText(count + ""); } @Override protected void onDestroy() { super.onDestroy(); handler.removeCallbacks(runnable); this.stopService(serviceIntent); }}
4.最后在AndroidManifest.xml文件中添加Service
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light"> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> **<service android:name="com.example.refreshdemo.MyService"></service>** </application>
运行截图:
源码下载
0 0
- Android---Service Timer之执行周期任务
- android ScheduleExecutorService定时周期执行指定任务
- android ScheduleExecutorService定时周期执行指定任务
- Android基础篇之Service(二) - Service声明周期周期
- ScheduledExecutorService执行周期任务
- ScheduledExecutorService执行周期任务
- ScheduledExecutorService执行周期任务
- Linux命令之crond周期定时计划任务执行
- android service 后台执行定时任务
- Android java 关于 Timer schedule 执行定时任务
- Android 计时器Timer用法 (定时执行任务)
- Java Timer定时器执行任务
- Android四大组件之service(二)——用service、scheduleAtFixedRate写一个后台定时执行任务
- ScheduledExecutorService定时周期执行指定的任务
- ScheduledExecutorService定时周期执行指定的任务
- ScheduledExecutorService定时周期执行指定的任务
- ScheduledExecutorService定时周期执行指定的任务
- ScheduledExecutorService定时周期执行指定的任务
- thinkphp-javascript ajax上传后台 post接收不到的原因
- typedef/结构体/枚举/
- 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- Java常用类源码分析_SimpleDateFormat
- ios-显示LCD效果
- Android---Service Timer之执行周期任务
- emacs与vi对比教程
- 在Application的onCreate中创建线程,线程不能被执行
- 基础之启动活动的最佳写法
- URAL 1039 / poj2342-Anniversary Party-树形DP
- 十大数据挖掘算法
- iOS uiwebview 有阴影的解决办法
- 对html字符进行转义和反转义---工具类StringEscapeUtils
- 基础之随时随地退出程序,建一个活动管理类