`

handler 计时器处理

 
阅读更多
我觉得很好用,控制计时并且实现两个Activity 之间跳转,这里传参数用了bundle 传递:

package com.face;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

public class Activity9 extends Activity {

private MyHandler myHandler;
myThread mythread = null;
private boolean bool = true;
private int count = 0;
int type = 0;
int time = 0;
int ctime = 0;

TextView tm;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test9);
tm = (TextView) findViewById(R.id.tsTxt);

bool = true;
myHandler = new MyHandler(Looper.getMainLooper());
mythread = new myThread();
mythread.start();
}

class myThread extends Thread {

@Override
public void run()
{
while (bool)
{
Message message = myHandler.obtainMessage();
message.what = 1;
myHandler.sendMessage(message);
try
{
Thread.sleep(5000);// 休息1min
count += 5;
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}

class MyHandler extends Handler {

public MyHandler(Looper looper) {
super(looper);
}

@Override
public void handleMessage(Message msg)
{
if (msg.what == 1)
{

if (count == (ctime + time))
{
count = 0;
}
tm.setText("====main======" + count);
if (count == 20)
{
ctime = count;
Log.i("main", "====="+count);
otherActivity();

}

}
}
}

public void otherActivity()
{
time = 4 * 15;
Intent itent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("showtype", "" + time);
itent.putExtras(bundle);
itent.setClass(Activity9.this, Activity12.class);
startActivity(itent);
}

@Override
protected void onDestroy()
{
bool = false;
myHandler.removeCallbacks(mythread);
super.onDestroy();

}

}
--------------------------
package com.face;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

public class Activity12 extends Activity {
TextView timeTxt = null;

private CollectHandler myHandler;
CollectThread mythread = null;
private boolean bool = true;
private int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.test12);
timeTxt = (TextView) findViewById(R.id.tmTxt);

Intent intent = this.getIntent();
String s = intent.getExtras().getString("showtype");
if (s != null)
{
int opentime = Integer.parseInt(s);
if (opentime > 0)
{
count = opentime;
bool = true;
myHandler = new CollectHandler(Looper.getMainLooper());
mythread = new CollectThread();
mythread.start();
} else
{
startActivity(new Intent(Activity12.this, Activity9.class));
finish();
}
} else
{
Log.i("Activity12", "====null");
finish();
}

}

class CollectThread extends Thread {

@Override
public void run()
{
while (bool)
{
Message message = myHandler.obtainMessage();
message.what = 1;
myHandler.sendMessage(message);
try
{
Thread.sleep(5000);// 休息1min
count -= 5;
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}

class CollectHandler extends Handler {

public CollectHandler(Looper looper) {
super(looper);
}

@Override
public void handleMessage(Message msg)
{
if (msg.what == 1)
{
if (count > 0)
{
timeTxt.setText("======Activity12===" + count);
} else
{
//startActivity(new Intent(Activity12.this, Activity9.class));
finish();
}
}
}
}

@Override
protected void onDestroy()
{
bool = false;
myHandler.removeCallbacks(mythread);
super.onDestroy();

}

}




分享到:
评论

相关推荐

    Android Studio通过Handler制作简单的计时器

    本教程将介绍如何使用Android Studio和Handler组件来创建一个简单的计时器应用。Handler是Android中的一个关键组件,它允许开发者在不同的线程之间发送和处理消息,从而实现异步操作。 首先,我们需要了解Android ...

    Android简单的计时器源码

    这里提到的是基于`Handler`的计时器实现,因为`Handler`更适合于UI线程的更新操作。 1. **Handler**:`Handler` 是 Android 中处理消息和延迟执行任务的核心类。通过创建一个`Handler`对象并关联到 Looper(消息...

    安卓 简单计时器 计时器

    在安卓平台上,开发一个简单的计时器应用是一个常见的任务,这涉及到对用户界面设计、时间管理以及事件处理的理解。下面将详细阐述这个过程中的关键知识点。 首先,计时器(Timer)在Android中通常通过`java.util....

    安卓天气日历时间选择倒计时相关-TimerHandler实现倒计时实现了暂停重置开始功能非常基础!需要的同学可以根据需求扩展.rar

    在这个压缩包中,开发者提供了一个基于`Timer`和`Handler`实现的倒计时器示例,它支持暂停、重置和开始的功能。这是一个基础的实现,可以作为其他更复杂需求的基础。 首先,我们来了解一下`Timer`和`Handler`这两个...

    android,linux 计时器多种实现

    第二种计时器实现:`Handler` 和 `Message` 在Android中,`Handler` 和 `Message` 结合使用可以创建一个定时任务。`Handler` 在指定的Looper线程上发送`Message`,并设定一个延迟时间,当延迟时间到达时,`Handler`...

    Android使用Handler实现定时器与倒计时器功能

    Android 使用 Handler 实现定时器与倒计时器功能 Android 中的 Handler 是一种消息机制的上层接口,它提供了许多底层的细节,让开发者能够很方便地使用底层的消息机制。Handler 的主要作用有两个:一是发送消息;二...

    Android 实现一个计时器

    本文将详细讲解如何在Android中实现一个具有暂停功能的计时器,主要利用Handler的`postDelayed()`函数。 首先,我们需要了解`Handler`在Android中的作用。`Handler`是Android消息处理机制的一部分,它主要用于发送...

    一个简单的android计时器

    通过深入研究和理解这个简单的计时器,你不仅可以掌握`CountDownTimer`的使用,还能学到如何在Android应用中处理用户交互和状态管理,这些都是Android开发的基本技能。当你完全理解并能够复现这个示例后,可以尝试...

    按键计时器

    综上所述,"按键计时器"这个项目涵盖了Android开发中的事件监听、计时器实现、UI更新、状态管理、异常处理和性能优化等多个重要知识点。开发者在实践中不仅要关注功能的实现,还要注重用户体验和代码质量,这样才能...

    计时器源码__项目

    通过分析这个项目,你可以学习到如何组织Android项目,如何将计时器功能与UI结合,以及如何处理用户交互。 7. **调试与优化** 在实际开发中,调试和优化计时器性能是非常关键的。例如,确保计时器在适当的时候停止...

    android 秒表计时器

    本项目实现了一个基于Handler的简单计时器,适用于计时范围小于1小时的情况。下面我们将深入探讨Android中如何使用Handler来构建这样一个计时器。 Handler是Android消息处理系统的关键组件,它允许开发者在不同的...

    android 计时器

    在处理计时器任务时,我们通常会用到Handler的postDelayed()方法,它可以在线程中延迟执行某项操作。 1. **Handler的创建与使用** 首先,我们需要创建一个Handler实例。Handler通常在主线程中创建,因为它通常用来...

    安卓天气日历时间选择倒计时相关-Button倒计时用到了Timer计时器和Handler.zip

    本资料包“安卓天气日历时间选择倒计时相关-Button倒计时用到了Timer计时器和Handler.zip”主要关注如何在Android应用中实现Button的倒计时功能,该功能通常涉及到两个关键组件:`java.util.Timer` 和 `android.os....

    android计时器小项目

    对于性能优化,可以考虑使用`CountDownTimer`类,它是一个预先定义好的计时器实现,简化了处理逻辑。还可以考虑添加振动、音效等增强用户体验的功能。 通过这个简单的计时器项目,开发者不仅可以掌握Android应用的...

    flash 计时器

    在AS3中,你可以通过在计时器事件处理函数中更新显示文本或变量来实现倒计时: ```actionscript var countdown:int = 60; // 倒计时秒数 function timerHandler(event:TimerEvent):void { countdown--; // 更新...

    Android计时器实现

    在Android中,有多种计时器实现方式,包括`java.util.Timer`、`android.os.Handler`以及`CountDownTimer`。其中,`CountDownTimer`是Android提供的一个专为Android环境设计的倒计时工具,它具有线程安全和易于使用的...

    简单的handle demo 实现计时器功能,亲测可用,线程例子

    8. **终止计时器**:要停止计时器,你需要清除Handler的消息队列,这通常通过调用`removeCallbacksAndMessages(null)`来实现,这将移除所有待处理的消息,防止Runnable继续执行。 9. **源代码分析**:HandlerDemo...

    flash AS3.0实现计时器功能

    在事件处理函数中,你会编写计时器触发时要执行的代码: ```actionscript function timerHandler(event:TimerEvent):void { trace("计时器触发"); // 这里执行你的业务逻辑 } ``` 4. **启动计时器** 添加...

    秒钟计时器小应用源码.zip

    每当需要更新计时器显示时,Runnable对象就会被post到Handler中,这样就可以在UI线程中安全地更新计时器的视图。 在用户界面设计方面,源码中可能包含了XML布局文件,描述了计时器界面的各个元素,如TextView用于...

Global site tag (gtag.js) - Google Analytics