当前位置:主页 > android教程 > Android秒表功能

Android实现秒表功能

发布:2023-03-07 18:00:01 59


给寻找编程代码教程的朋友们精选了相关的编程文章,网友姜和同根据主题投稿了本篇教程内容,涉及到Android、秒表、Android秒表功能相关内容,已被216网友关注,相关难点技巧可以阅读下方的电子资料。

Android秒表功能

本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下

设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新

activity_main.xml




   

       
   
    

        
    
    

        

AndroidManifest.xml

将activity,service在AndoidMainfest.xml中注册




    
        
            
                

                
            
        
        

        
    

Timeservice.java

service服务

package com.example.ex_5;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.Nullable;
import java.util.Date;

public class TimeService extends Service {
    @Nullable

    private Date startTime = new Date();
    private long diff;
    public Thread workThread;

    private Runnable backGroundWork = new Runnable() {
        @Override
        public void run() {
            while(!Thread.interrupted()){
                Date endTime = new Date();
                diff = endTime.getTime()-startTime.getTime();
                MainActivity.UpdateGUI(diff);
                Log.i("TimeService:The diff is",String.valueOf(diff));
                try {
                    Thread.sleep(0);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
        Log.i("TimeService","onCreate");
        workThread=new Thread(null,backGroundWork,"workThread");
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        if(!workThread.isAlive()){
            workThread.start();
        }
        Log.i("TimeService","onStart");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        MainActivity.UpdateGUI(0);
        MainActivity.UpdateDiff(diff);
        workThread.interrupt();
        Log.i("TimeService","onDestroy");

    }


    public IBinder onBind(Intent intent) {
        return null;
    }
}

MainActivity.java

注册按钮响应事件,更新UI界面

package com.example.ex_5;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.net.ServerSocket;

public class MainActivity extends AppCompatActivity {
    private static Handler handler = new Handler();
    private static TextView labelView = null;
    private static String time;
    private static long _diff = 0;


//更新界面
    public static void UpdateGUI(long diff) {
        diff += _diff;
        int hours = (int) diff / (1000 * 60 * 60);
        int minutes = (int) (diff - (hours * (1000 * 60 * 60))) / (1000 * 60);
        int seconds = (int) (diff - (hours * (1000 * 60 * 60)) - (minutes * (1000 * 60))) / 1000;
        time = hours + ":" + minutes + ":" + seconds;
        handler.post(RefreshLable);
    }
//供停止功能使用,用于记录服务结束之时的时间
    public  static void UpdateDiff(long diff){
        _diff = diff;
    }
//setText
    public static Runnable RefreshLable = new Runnable() {
        @Override
        public void run() {
            labelView.setText(time);
        }
    };


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button initButton = findViewById(R.id.init);
        final Button startButton = findViewById(R.id.start);
        Button stopButton = findViewById(R.id.stop);
        labelView = findViewById(R.id.clock);

        final Intent serviceIntent = new Intent(this, TimeService.class);
        startButton.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View view) {
                Log.i("MainActivity","ClickStartButton");
                startService(serviceIntent);
            }
        });
        stopButton.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View v) {
                Log.i("the behead diff is",String.valueOf(_diff));
                Log.i("MainActivity","ClickStopButton");
                stopService(serviceIntent);
            }
        });
        initButton.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                Log.i("MainActivity","ClickInitButton");
                _diff = 0;
                String text = "00:00:00";
                labelView.setText(text);
                stopService(serviceIntent);
            }
        });
    }


}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • Android性能优化之RecyclerView分页加载组件功能详解

    发布:2023-03-04

    这篇文章主要为大家介绍了Android性能优化之RecyclerView分页加载组件功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Android Navigation重建Fragment问题分析及解决

    发布:2023-03-09

    这篇文章主要介绍了Android Navigation重建Fragment问题分析及解决,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下


  • Android Framework层获取及处理按键事件流程

    发布:2023-03-03

    本文主要介绍了Android Framework层获取及处理按键事件流程,Android系统的输入事件是InputManagerService服务来监控的,该系统服务在SystemServer的startOtherServices()中初始化,更多介绍需要的小伙伴可以参考一下


  • Android Flutter实现自定义下拉刷新组件

    发布:2023-03-02

    在Flutter开发中官方提供了多平台的下拉刷新组件供开发者使用。本文将改造一下这些组件,实现自定义的下拉刷新组件,感兴趣的可以了解一下


  • Android PowerManagerService 打开省电模式

    发布:2023-03-02

    这篇文章主要介绍了Android PowerManagerService打开省电模式,文章通告省电模式的打开过程、什么是 battery saver sticky 模式两部分展开详情,感兴趣的朋友可以参考一下


  • 初识Android PowerManagerService省电模式

    发布:2023-03-02

    这篇文章主要介绍了初识Android PowerManagerService省电模式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下


  • Android SharePreferences与数据库SQLite存储实现方法介绍

    发布:2023-03-13

    这篇文章主要介绍了Android SharePreferences与数据库SQLite用于存储的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧


  • Android性能优化之ANR问题定位分析

    发布:2023-03-03

    这篇文章主要介绍了Android性能优化之ANR问题定位分析,ANR应用程序未响应,当主线程被阻塞时,就会弹出如下弹窗,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可任意参考一下


网友讨论