Welcome

首页 / 移动开发 / Android / AndRoid通过Thread实现定时任务

package cn.com.weisoft.meetdemo;

import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;


import java.util.Timer;

import java.util.TimerTask;


@SuppressWarnings("ALL")

public class MainActivity extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        new Thread(new MyThread()).start();//方法一

        handler2.postDelayed(runnable, 2000);//执行方法二

//        handler2.removeCallbacks(runnable);//停止执行方法二


        //方法三执行

        task=new TimerTask(){

            public void run(){

                Message message=new Message();

                message.what=1;

                handler3.sendMessage(message);

            }

        };

        timer.schedule(task,3000,3000);//启动执行

//        timer.cancel();//停止计时器

    }

    private void ShowLog(int index){

        Log.i("WS",index+":执行操作");

    }

    //方法一内部类实现线程操作

    Handler handler=new Handler(){

        public void handleMessage(Message msg){

            //这里执行操作

            ShowLog(1);

            super.handleMessage(msg);

        }

    };

    public class MyThread implements Runnable{

        @Override

        public void run() {

            while(true){

                try{

                    Thread.sleep(5000);

                    Message message=new Message();

                    message.what=1;

                    handler.sendMessage(message);

                }

                catch(InterruptedException e){

                    e.printStackTrace();

                }

            }

        }

    }

    //方法二

    Handler handler2=new Handler();

    Runnable runnable=new Runnable() {

        @Override

        public void run() {

            //执行的操作

            ShowLog(2);

            handler2.postDelayed(this,2000);

        }

    };


    //方法三

    private final Timer timer=new Timer();

    private TimerTask task;

    Handler handler3=new Handler(){

        @Override

        public void handleMessage(Message msg){

            //要做的事儿

            ShowLog(3);

            super.handleMessage(msg);

        }

    };


}