Android Handle Thread Message 小说明
来源:互联网 发布:泉州广电网络 编辑:程序博客网 时间:2024/04/29 10:49
課題
Androidで一定の間隔をおいて定期的に処理を実行する。
方法
1.Handler#postDelayed()を使う方法
2.Handler#sendMessageDelayed()を使う方法
3.Threadを使う方法
(TimerTaskとかAlarmManagerってのでもできるっぽいけどやらない)
1 Handler ------>> postDelayed() 方法
package com.shixinzhu.android;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
/**
* 1.初回実行 2.繰り返し 3.次回処理をセット(Handler#postAtTime()でも代用可) 4.停止
*/
public class RepeatByPost extends Activity {
// 繰り返し間隔(ミリ秒)
private final int REPEAT_INTERVAL = 3000;
private Handler handler = new Handler();
private Runnable runnable;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
runnable = new Runnable() {
@Override
public void run() {
// 2.繰り返し処理
doSomething();
// 3.次回処理をセット
handler.postDelayed(this, REPEAT_INTERVAL);
}
};
// 1.初回実行
handler.postDelayed(runnable, REPEAT_INTERVAL);
}
private void doSomething() {
Log.i("Repeat by", "post");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("onTouchEvent()", "STOP");
// 4.画面がタッチされたらhandlerからコールバック(runnable)を削除して処理を停止する
handler.removeCallbacks(runnable);
return true;
}
}
2: Message ------> sendMessageDelayed()
package com.shixinzhu.android;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.MotionEvent;
/**
* 1.初回実行 2.繰り返し判定 3.繰り返し処理 4.次回処理をセット 5.停止処理
*/
public class RepeatBySendMessage extends Activity {
// 繰り返し間隔(ミリ秒)
private final int REPEAT_INTERVAL = 3000;
// 繰り返し処理を続けるかどうかのフラグ
private boolean isRepeat = true;
// Messageコード(数値は適当)
private final int MESSAGE_WHAT = 100;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 2.isRepeatがtrueなら処理を繰り返す
if (isRepeat) {
// 3.繰り返し処理
doSomething();
// 4.次回処理をセット
handler.sendMessageDelayed(obtainMessage(), REPEAT_INTERVAL);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Message message = new Message();
message.what = MESSAGE_WHAT;
// 1.初回実行
handler.sendMessageDelayed(message, REPEAT_INTERVAL);
}
private void doSomething() {
Log.i("Repeat by", "sendMessage");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("onTouchEvent()", "STOP");
// 5.画面がタッチされたらisRepeatをfalseにして繰り返し処理を停止させる
isRepeat = false;
return true;
}
}
3: Thread ------>> sleep
package com.shixinzhu.android;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
/**
* 1.スレッド起動 2.繰り返し判定 3.繰り返し処理 4.停止処理
*/
public class RepeatByThread extends Activity {
// 繰り返し間隔(ミリ秒)
private final int REPEAT_INTERVAL = 3000;
// 繰り返し処理を続けるかどうかのフラグ
private boolean isRepeat = true;
private Thread thread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Runnable looper = new Runnable() {
@Override
public void run() {
// 2.isRepeatがtrueなら処理を繰り返す
while (isRepeat) {
try {
Thread.sleep(REPEAT_INTERVAL);
} catch (InterruptedException e) {
Log.e("looper", "InterruptedException");
}
// 3.繰り返し処理
doSomething();
}
}
};
// 1.スレッド起動
thread = new Thread(looper);
thread.start();
}
private void doSomething() {
Log.i("Repeat by", "thread");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("onTouchEvent()", "STOP");
/*
* 4.画面がタッチされたらisRepeatをfalseにして繰り返し処理を停止させる
* Threadを利用した場合は停止のタイミングがずれることがある
*/
isRepeat = false;
return true;
}
}
- Android Handle Thread Message 小说明
- Android Handle机制 理解Looper、Handle、Message的关系
- android handle message Runnable 实现页面更新
- Android Handle,Looper,Message消息机制
- android thread Handler 、Looper、 Message、 Message Queue
- android handle thread runnable的关系
- Android异步机制详解一:THread+Handle
- android多线程编程(Thread,Handle,AsycTask)
- Android——使用Handle和Message更新UI控件
- Android 中 handle Message 的简单使用笔记
- Android 中的消息模型(Message,MessageQueue,handle,looper)
- Android 中的消息模型(Message,MessageQueue,handle,looper,)
- handle Message 的用法
- Message Queue和handle
- handle message looper messagequeue
- handle 与 Message
- handle Message 的用法
- Handle、Message、Looper
- C++ auto_ptr(转)
- 计算机内存分配
- Eclipse自动成doc(文档)以及 chm 格式帮助文件
- android 获得墙纸
- android 深入学习资料
- Android Handle Thread Message 小说明
- 告别ASP.NET操作EXCEL的烦恼(总结篇)
- C----Study
- linux C print
- java 反射
- 如何利用反射去访问一个私有的方法
- 一段有意思的代码
- Android Thread,Handler,Loop用法介绍
- Linux C++ STL用法介绍(1)