android开发步步为营之61:android定时任务之Handler.postDelayed

/**
 *
 */
package com.figo.study;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

/**
 * @author figo
 *
 */
public class HandlerActivity extends Activity {
	private Button btnHandler, btnClose;
	private Handler handler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_handler);

		handler = new Handler();
		btnHandler = (Button) findViewById(R.id.btnHandler);
		btnClose = (Button) findViewById(R.id.btnClose);
		// 开始执行定时任务
		btnHandler.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 1秒后执行run
				handler.postDelayed(run, 1000);
			}
		});
		// 关闭定时任务
		btnClose.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				handler.removeCallbacks(run);
			}
		});

	}

	// 其实是运行在UI主线程
	Runnable run = new Runnable() {

		@Override
		public void run() {
			// 这里new 一个AsyncTask或者Thread执行耗时任务,否则报ANR的bug
			Toast.makeText(HandlerActivity.this, "test", Toast.LENGTH_SHORT)
					.show();
			// 每隔5秒后执行run方法
			handler.postDelayed(this, 5000);
		}
	};

}

时间: 2024-10-09 11:06:33

android开发步步为营之61:android定时任务之Handler.postDelayed的相关文章

android开发步步为营之59:android定时任务之ScheduledThreadPoolExecutor

android定时任务有多种,1.Timer+TimerTask 2.Handler.postDelay   3.AlarmManager  4.ScheduledThreadPoolExecutor,前面3种比较常见,相信大家也经常使用,本文介绍采用多线程的ScheduledThreadPoolExecutor,它相比jdk 1.5的Timer的优点有几点:1.采用多线程,Timer是单线程,一旦Timer里面任何一个TimerTask异常的话,整个Timer线程就会停止 2.Timer依赖计

android开发步步为营之56:Android开发技术点总结(持续更新)

1.eclipse svn插件下载 http://subclipse.tigris.org/update_1.6.x http://subclipse.tigris.org/update_1.8.x 64位机器 http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 2.eclipse常用插件下载 http://blog.csdn.net/jackiehff/article/details/8181945 3.unico

android开发步步为营之70:android接入Google Analytics总结

求人不如求己,今天项目里要接入Google Analytics,这个是做应用统计分析用的,可以查看当前手机活跃用户,事件点击等等数据,先看看效果: 之前eclipse里面接入已经成功,昨天项目组决定项目转成使用android studio来开发,看google官方文档,官方文档https://developers.google.com/analytics/devguides/collection/android/v4/,然后官方文档里面的配置文件是用google-services.json的,这

android开发步步为营之66:android图片选取

最近做一个页面,反馈问题页面,有个用户上传问题图片的功能.本来很笨的想把系统的所有图片列出来,然后让用户选择,后来发现原来可以直接打开手机所有图片的api的.效果如图: 给出主要代码: 1.选择图片 Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, 1); 2.获取图片 protect

【Android开发】完美解决Android完全退出程序

背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Process.killProcess(android.os.Process.myPid()) 但实际应用中,并不是能够真正退出,问题出在?1跳转到2时,如果Activity1你finish掉了,两么是可以退出程序的,但有时1跳转到2时,我们不能将Activity1 finish掉,那么在Activit

第四章 Android开发三大基石—Activity、Service和Handler(1)

第四章 Android开发三大基石-Activity.Service和Handler 学习Android开发,首先就不得不学习Activity和Service这两个组件.Activity是有界面的程序,几乎承载着用户对应用程序的所有操作.而Service是没有界面的程序,它是所谓的服务,也叫后台程序.掌握好它们,是我们学习Android开发必不可少的环节.Handler是Android开发中最常用的消息机制,几乎所有应用程序都会使用Handler传递消息.可以说,想要学习Android应用开发,

Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 1.其实AS project/module的目录结构很简单,我浓缩成2张图给总结了,先看图,再看下面的文字,因为还有些细节图上体现不出来(我这个图上的项目来源于我之前的Eclipse项目,并且有lib项目库相互依赖) 2.上面的图很直观,但也很眼花缭乱,我再针对图总结下重点和疑问点. ①在AS的世界里,文件夹都以模块(module)为单位组织的,其

配置cordova的android开发环境(无android studio)

原文:配置cordova的android开发环境(无android studio) 趁元旦放假想试一下cordova,不想安装庞大的android studio,所以想最小化安装,居然花了一整天的时间才能正常编译cordova工程,记录一下过程,备将来参考. 安装环境:操作系统:windows 10 x64 第一步:安装nodejs,下载最新版本v10.15.0 第二步:设置npm安装源 npm config set registry http://registry.npm.taobao.org

android开发步步为营之20:网络设置

网络设置这块在手机应用里面是非常重要的一块,因为一般应用都需要和外部网络做交互的.本篇文章就展示了一个比较经典应用场景.比如我最近在开发的转账应用.这个是需要和网络交互的.当用户打开应用之后,应用首先会判断用户是否已经打开wifi或者gprs网络.没有则跳转到系统的无线和网络设置界面,当用户设置好了之后,我这里做了一个更人性化的处理,创建了一个广播接收器,因为我们知道,手机在打开网络或者收到短信的时候,都会对外发布一条广播.一旦网络连接上了之后,我的这个广播接收器,就会收到信息,然后判断当前的转