⑴ android 定时器暂停 可以用canel()方法 但我又想再次唤起 用什么方法
android 定时器是一个线程,线程canel 以后,只能重新new 并调用 start启动。
具体实现代码:
创建线程定时器同理
Thread thread = new Thread();
thread.start(); 启动线程
当线程或定时器停止后,需要重新new
thread = new Thread();
thread.start(); 重新启动线程或定时器
⑵ android中新声明了一个线程,如何对这个线程进行开始,暂停,再开始呢
class RunnableDemo implements Runnable {
public Thread t;
private String threadName;
boolean suspended = false;
RunnableDemo( String name){
threadName = name;
System.out.println("Creating " + threadName );
}
public void run() {
System.out.println("Running " + threadName );
try {
for(int i = 10; i > 0; i--) {
System.out.println("Thread: " + threadName + ", " + i);
// Let the thread sleep for a while.
Thread.sleep(300);
synchronized(this) {
while(suspended) {
wait();
}
}
}
} catch (InterruptedException e) {
System.out.println("Thread " + threadName + " interrupted.");
}
System.out.println("Thread " + threadName + " exiting.");
}
public void start ()
{
System.out.println("Starting " + threadName );
if (t == null)
{
t = new Thread (this, threadName);
t.start ();
}
}
void suspend() {
suspended = true;
}
synchronized void resume() {
suspended = false;
notify();
}
}
start为开始,suspend为暂停,resume为恢复。
⑶ android如何终止一个正在运行的子线程
线程像这样:
Thread{
boolean flag = fase;
run(){
while(!flag){
}
}
}
Thread t = new Thread();
t.start();
-----------------------------------------------------
要终止循环,只需要这样
t.flag=true;
================================================
还有一种方式 线程像这样:
Thread{
run(){
while(true){
Thread.sleep(xxxx);
}
}
}
Thread t = new Thread();
t.start();
--------------------------------------------
要终止循环,只需要这样
t.interrupte();
但是这里要注意调用的时机,要在子线程执行了run方法里面的sleep(xxxx)后xxxx时间之内调用。也就是子线程会睡一会,醒一会,睡一会,醒一会,要在子线程睡着的时候调用。
⑷ android thread join和stop的区别
stop() 方法是立即停止当前线程, 这样停止的后果是导致stop后的语句无法执行, 有可能资源未释放或者在同步块中调用此方法会导致同步数据会不完整. 所以这样的方法并不安全. 强列建议不要使用此函数来中断线程。
interrupt()方法没有stop那么的粗暴,因为可以用catch捕捉到InterruptedException这个异常。一个线程处于了阻塞状态(如线程调用了thread.sleep、thread.join、thread.wait以及可中断的通道上的
I/O
操作方法后可进入阻塞状态),方法调用处抛出InterruptedException异常,抛出异常是为了线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求。
join() 方法作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在主线程调用了join()方法后面的代码,只有等到子线程结束了才能执行
⑸ 能主动让android主线程等待1s吗
当然可以啊,你在主线程中
try {
Thread.sleep(1000); //就是当前线程暂停1000毫秒
} catch (Exception e) {
// TODO: handle exception
}
⑹ Java(android) 程序暂停, Thread.sleep
我觉得吧
你暂停的时候应该吧TIMER.CANCEL()掉,也就是退出TIMER,等恢复的时候再重新调用TIMER
如果时间是变动的,那么你就不要用TIMER,自己NEW 一个THREAD然后在THREAD里设置一个标志变量,可以再外面访问的,用它来控制线程的退出,里面再调用this.sleep(),
不能再主线程里直接SLEEP,那样程序会全停掉
⑺ Android 的Thread编程,我在Thread的run()方法中用Toast输出信息时出错!
子线程中不能弹Toast,不能更新UI,你可以在子线程中使用Handler回调,在主线程中弹Toast,可以这样写:
主线程在 onCreate方法之外:
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Toast.makeText(ThreadActivity.this, "toast", Toast.LENGTH_SHORT).show();
break;
}
super.handleMessage(msg);
}
};
子线程:
try {
Thread.sleep(5000);
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
⑻ Java android while 想暂停几秒 如何实现
试试加上这样一段代码:
try {
//单位是毫秒
Thread.sleep(1000);
} catch(Exception ex) {
}
⑼ 如何实现Android 中断线程的处理
可以用interrupt()方法中断线程,而线程是否已经中断则用Thread.currentThread().isInterrupted()方法返回true/false判断:
1、线程start()后马上调用interrupt(),在进入run()时中断标志已经被set on;
2、在处理sleep()可能抛出的InterruptedException时,再次中断线程即可成功中断;
3、注意interrupt()方法是set on 中断标志的,interrupted()方法是判断后并清除中断标志的。
public class ThreadDemo extends Thread{
public static void main(String[] args){
try{
ThreadDemo thread = new ThreadDemo();
thread.start();
thread.sleep(100);
thread.interrupt(); //中断线程
thread.sleep(100);
thread.printStr();
thread.interrupt(); //第三次中断线程
thread.printStr();
thread.join();
}catch(InterruptedException e){
e.printStackTrace();
}
}
private void printStr(){
System.out.println("thread obj");
}
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()) {
System.out.println("thread running");
try {
Thread.sleep(100);
}catch(InterruptedException e)
{
System.out.println("InterruptedException");
Thread.currentThread().interrupt(); //再次中断线程
}
}
System.out.println("thread interrupted");
}
}
运行结果:
thread running
InterruptedException
thread interrupted
thread obj
thread obj
⑽ android thread 后台线程 怎么设置随着主线程的结束而结束
关于线程的结束有以下几点:
1.不要手动调用stop方法强行终止一个线程,这种方式不安全。
通过帮助文档,我们可以知道,Android的线程类本身就提供了一些公共方法去结束线程。
final void stop()
This method is deprecated. because stopping a thread in this manner is unsafe and can leave your application and the VM in an unpredictable state
但是,通过说明我们可以看到,这些方法Android本身都是不推荐使用的,通过这种方式结束线程是不安全的。
2.线程里run函数短,执行完后线程会自行销毁,不用手动去终止。
3.手动停止,通过在run里设置标志先停止运行,再调用Thread.interrupt();注意,在run没有停止时调用.interrupt()没有效果。