- 浏览: 384805 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
longxishui12:
这个一定要顶得高高的。
[Android UI界面] android中仿iphone实现listview的反弹效果 -
klower.jiang:
Good job, Thank you so much!
能够兼容ViewPager的ScrollView -
ZSRTFAT:
...
file size 的大小计算
AlarmManager
手动设定手机的显示时间,只要大于或者等于AlarmManager 定的下次扫描时间就会触发闹钟
重复启动activity;
Intent intent = new Intent(context, TestActivity.class); intent.putExtra("type", type); PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 500, pi);
定时启动 :
long time = "--------"; Intent intent = new Intent(TestReceiver.ACTION_ACTION); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent , PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarm = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); alarm.set(AlarmManager.RTC, time, pendingIntent);
取消定时:
Intent intent = new Intent(context, TestActivity.class); intent.putExtra("type", type); PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); alarmManager.cancel(pi);
time 重复启动:没隔1秒启动。
public void time (){ startTimeMilin = Calendar.getInstance().getTimeInMillis()+30*60*1000; Timer timer = new Timer (); timer.schedule(new TestTimerTask(), 0, 1000); } class TestTimerTask extends TimerTask{ @Override public void run() { runOnUiThread(new Runnable() { public void run() { long leftTimesMilin = startTimeMilin-Calendar.getInstance().getTimeInMillis(); long minitue = leftTimesMilin/1000/60; long seconds = leftTimesMilin/1000%60; String minStr = ""; String secdStr = ""; if (minitue<10) { minStr = "0"+minitue; } else { minStr = ""+minitue; } if (seconds<10) { secdStr = "0"+seconds; } else { secdStr = ""+seconds; } btn.setText(minStr+":"+secdStr); if(minitue<=0&&seconds<=0){ btn.setText("btn"); isBtnEnable = true; if(mTimer!=null){ mTimer.cancel(); mTimer = null; } } } }); } }
定时启动:1秒中后启动,
Timer timer2 = new Timer(); timer2.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub } },1000);
在service中重复启动:
Button bt1 = (Button) findViewById(R.id.bt1); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("test", "___" + isTopActivy()); ComponentName comp = new ComponentName("com.android.phone", "com.android.phone.EmergencyDialer"); Intent intentM = new Intent(); intentM.setComponent(comp); startActivity(intentM); Intent intent = new Intent(); intent.setClass(PhoneDemoActivity.this, PhoneService.class); // intent.setAction(PhoneService.LOCK); intent.setAction(PhoneService.LOCK_TIME); startService(intent); } });
public class PhoneService extends Service { public static final String LOCK = "SET_LOCK" ; public static final String CANCEL_LOCK = "CANCEL_LOCK" ; LockViewTimerTask task ; private Timer timer ; public static final String LOCK_TIME = "TIME_LOCK" ; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if(intent != null){ String action = intent.getAction(); Log.d("test", "action_" + action); if(action.equals(LOCK)){ setAlarm(); String phoneEm = isTopActivy(); String pStr = "ComponentInfo{com.android.phone/com.android.phone.EmergencyDialer}" ; String lStr = "ComponentInfo{com.phone/com.phone.PhoneDemoActivity}" ; String launch2 = "ComponentInfo{com.android.launcher/com.android.launcher2.Launcher}" ; // if(phoneEm.equals(launch2)){ if(phoneEm.equals(pStr) || phoneEm.equals(lStr)){ }else { Intent intent2 = new Intent(); intent2.setClass(this, PhoneDemoActivity.class); intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent2); } Log.d("test", "!phoneEm.equals(phoneEm)_" + !phoneEm.equals(phoneEm)); Log.d("test", "!phoneEm.equals(lStr)_" + !phoneEm.equals(lStr)); Log.d("test", "phoneEm_" + phoneEm); }else if(action.equals(CANCEL_LOCK)){ cancelAlarm(); }else if(action.equals(LOCK_TIME)){ setTask(); } } } private int i = 0; private int j = 0; private void setAlarm(){ Log.d("test", "setAlarm_" + i++); Intent i = new Intent(); i.setClass(this, PhoneService.class); i.setAction(LOCK); PendingIntent pi = PendingIntent.getService(this, 0, i, 0); AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE); alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + 500,500, pi); } private void cancelAlarm(){ Log.d("test", "cancelAlarm_" + j++); Intent i = new Intent(); i.setClass(this, PhoneService.class); i.setAction(LOCK); PendingIntent pi = PendingIntent.getService(this, 0, i, 0); AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE); alarmMgr.cancel(pi); } /***/ public String isTopActivy(){ ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1); String cmpNameTemp = null; if(null != runningTaskInfos){ cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString(); // Log.e("cmpname","cmpname:"+cmpNameTemp); } return cmpNameTemp; } private void setTask(){ timer = new Timer(); task = new LockViewTimerTask(); timer.schedule(task, 0, 500); } class LockViewTimerTask extends TimerTask{ @Override public void run() { String componentInfo = "ComponentInfo{com.android.phone/com.android.phone.EmergencyDialer}"; String lostInofString = "ComponentInfo{com.phone/com.phone.PhoneDemoActivity}"; String topA = isTopActivy(); Log.d("test","__________topA" + topA); boolean bn = topA.equals("ComponentInfo{com.android.phone/com.android.phone.EmergencyDialer}") ; if(topA.equals(componentInfo)){ }else if(topA.equals(lostInofString)){ timer.cancel(); task.cancel(); }else { Intent intent = new Intent(); intent.putExtra("type", 3); intent.setClass(PhoneService.this, PhoneDemoActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); timer.cancel(); task.cancel(); } } } }
发表评论
-
drawable
2012-04-26 10:58 4050drawable 一些总结: http://www.c ... -
file size 的大小计算
2012-04-25 18:21 11274file size 的大小计算: String an ... -
SpannableStringBuilder
2012-04-25 17:34 4907设置指定文字颜色: String str = &quo ... -
sdcark卡。
2012-04-24 16:53 850转载:http://www.cnblogs.com/Terry ... -
android读写文件
2012-04-22 17:16 937一、 从resource中的raw文件夹中获 ... -
读取assessts的txt
2012-04-22 17:14 949try { // Return an Asset ... -
android 应用程序Activity之间数据传递与共享的几种途径
2012-04-21 22:09 981转载:http://blog.csdn.net/u0fly/a ... -
android 界面布局 很好的一篇总结 【转】
2012-04-19 16:17 1255转载:http://www.eoeandroid. ... -
activity以dialog形式显示
2012-04-11 17:41 63281、AndroidManifest.xml 文件中,申明 ac ... -
Android开发神贴整理
2012-04-06 14:36 784Android开发神贴整理 http://www.apkbu ... -
Google Android开发精华教程(apkbus整理)
2012-04-06 14:35 812转载 Google Android开发精华教程 ... -
使用Iterator 或for-each注意:java.util.ConcurrentModificationException
2012-04-05 16:37 904使用Iterator 或for-each注意:java.ut ... -
分享45个源码
2012-03-31 09:58 856http://www.apkbus.com/android-2 ... -
不显示近期任务
2012-03-28 17:11 1564manifest中设置activity为: (在长按HOME键 ... -
获取SD卡中的apk信息
2012-03-21 15:22 1187转自: http://hi.baidu.com/jeremy ... -
遮罩效果。
2012-03-15 16:53 894来自: http://www.ligotop.com/201 ... -
收藏Android下bitmap内存限制OUT OF MEMORY的方法
2012-03-15 16:15 1567收藏Android下bitmap内存限制OUT OF M ... -
android课程
2012-03-14 15:40 739http://www.mobidever.com/course ... -
获得联系人
2012-03-14 11:56 1061String contactId ; privat ... -
学习网站
2012-03-06 18:10 705http://www.cyqdata.com/android/ ...
相关推荐
本文将讲解一下如何使用AlarmManager实现定时提醒功能。 闹钟配置 周期闹钟 Intent intent = new Intent(); intent.setAction(GlobalValues.TIMER_ACTION_REPEATING); PendingIntent sender = PendingIntent....
1.实现Push推送demo,用AlarmManager实现全局定时和Timer、TimerTask两种方式分别实现定时服务状态栏Notification消息提醒! 2.该功能经过测试,只需要从服务上定时获取到提醒消息即可,稍做修改,即可使用。 3.可以...
AlarmManager主要依赖于硬件抽象层(HAL)和内核的计时器服务,例如Linux内核的`timer wheel`。当AlarmManager接收到调度请求时,它会将这些请求转化为内核级的定时事件,并由内核在指定时间唤醒CPU执行相应的任务。...
虽然在Android中,我们更倾向于使用`Handler`、`ScheduledExecutorService`或`AlarmManager`来实现定时任务,但了解`Timer`的使用也是有必要的,尤其是对于那些熟悉Java基础的开发者。 `Timer`类的主要方法包括: 1...
在Android中,定时任务通常通过AlarmManager类来实现。AlarmManager是系统服务,可以安排一次性或周期性的任务执行。它的工作原理是发送意图(Intent)到BroadcastReceiver,然后由BroadcastReceiver触发相应的操作...
在Android应用开发中,Service和Timer是两个非常重要的组件,它们可以帮助我们实现后台服务和定时任务的管理。本文将深入探讨如何使用Service和Timer来执行周期性的任务。 Service是Android系统中的一个关键组件,...
在"TimingDemo"这个例子中,我们可以推测它可能包含了一个或多个上述的定时任务实现,可能通过创建Handler、TimerTask、AlarmManager的实例或者使用WorkManager来演示如何在Android中创建和管理定时和周期任务。...
* 使用AlarmManager实现定时执行某种功能 * 使用ScheduledExecutorService实现定时执行某种功能 * 使用RxJava实现定时执行某种功能 小结: Android平台中,定时器是实现定时执行、重复执行、定时重复执行、定次数...
在本项目中,开发者可能使用了AlarmManager来实现定时切换情景模式的功能,因为它可以确保在指定时间点准确触发。 **三、源码分析** 1. **主Activity**:通常包含UI界面,用户可以设置定时器的时间和目标情景模式。...
这个场景下,我们可以使用Android的定时器(Timer)或者AlarmManager来实现。本压缩包文件"android定时器实现每天定时执行任务.rar"可能包含了一个示例项目,用于演示如何在Android中设置每日定时任务。 首先,...
`Timer`类用于创建和调度任务,而`TimerTask`则代表要定时执行的任务。你可以创建一个`TimerTask`实例,覆盖其`run()`方法以定义执行的动作,然后用`Timer`来安排这个任务的执行时间。 2. **Android权限**: 在...
本文实例讲述了Android基于AlarmManager实现用户在线心跳...AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service. 下面的代码详细的介绍了两种定时方式的使用: (1)
Android日期和时间处理涉及`Date`、`SimpleDateFormat`(或`DateTimeFormatter`)、`Timer`、`TimerTask`、`Handler`、`Message`、`System.currentTimeMillis()`、`SystemClock.elapsedRealtime()`和`AlarmManager`...
选择哪种方式取决于具体需求,Handler适合简单的定时或延时任务,CountDownTimer适用于倒计时场景,而AlarmManager则适用于需要在后台持续运行的周期性任务。在实际开发中,开发者可以根据项目需求灵活选择和组合...
但是,Android推荐使用更高效且线程安全的`Handler` 和 `Runnable` 或 `CountDownTimer` 来实现定时任务,因为`Timer`在主线程中运行可能导致UI阻塞。 2. **Handler和Runnable** 在Android中,通常通过创建一个`...
在【压缩包子文件的文件名称列表】中提到的“定时拨打电话app”,通常会包含以下组件:主活动(MainActivity)负责界面展示和用户交互,定时器服务(TimerService)用于后台运行定时任务,权限请求相关的代码...
Android提供了多种计时机制,包括Handler、Timer、CountDownTimer以及AlarmManager等。下面我们将深入探讨这些计时器的工作原理和使用方法。 1. **Handler与Runnable** Handler是Android中处理消息和延迟执行任务...
本文将深入探讨Android中三种常见的定时任务实现方式:Handler、Timer以及AlarmManager,并分析它们的适用场景。 首先,我们来看第一种方法:**Handler与线程的sleep(long)方法**。虽然这种方法基于Java的Thread....