android studio如何绑定服务和线程实现计时器
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了android studio如何绑定服务和线程实现计时器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实验目的:熟悉
千家信息网最后更新 2026年11月01日android studio如何绑定服务和线程实现计时器
这篇文章主要介绍了android studio如何绑定服务和线程实现计时器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
实验目的:
熟悉和掌握Android线程的使用
实验要求:
1.完成一个秒表,具备启停功能
2.通过绑定服务实现功能,通过Thread+handler更新界面
这章节没花什么时间去学,其他事情又很多,所以只是简单实现了一下,在生命周期那里还是有些没处理的地方,因此
主要思路是:在服务中启动一个线程实现计数的功能,并且每隔10ms调用一下更新界面的函数,这需要用到Thread+handler,当然还需要一些控制启停的公有函数供activity调用,同过绑定的服务的方式,activity中可以获得服务的实例,所以以activity作为控制器,对不同的按钮事件调用service的控制启停的函数或者计数清零的函数,以此来实现计时器的功能。完成实验后发现这样实现的计时器精度比较粗糙,不过功能正常,更好的思路是使用时间函数,不过在本次实验的目的是练习线程和绑定服务的使用,因此没有继续改动。


实验代码:
MyService .java
package com.example.shiyan5;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;public class MyService extends Service { private final IBinder binder = new MyBinder(); private Thread workThread; private int count=0; private boolean c_stop=true; public MyService() { } public void clearcount() { count=0; } public void countstop(){ c_stop=true; } public void countstart(){ c_stop=false; } @Override public void onCreate() { super.onCreate(); workThread=new Thread(null,backgroundWork); workThread.start(); } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } public class MyBinder extends Binder { MyService getService() { return MyService.this; } } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. return binder; //throw new UnsupportedOperationException("Not yet implemented"); } private Runnable backgroundWork =new Runnable() { @Override public void run() { try { while(true) { if(c_stop==false) { count++; } MainActivity.UpdateGUI(count); Thread.sleep(10);//10毫秒计数一次Z } } catch (InterruptedException e) { e.printStackTrace(); } } };}MainActivity.java
package com.example.shiyan5;import androidx.appcompat.app.AppCompatActivity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity { static TextView textView1,textView2; Button bt_clear,bt_stop,bt_start; MyService mService; boolean mBound; static int count; static Handler handler=new Handler(); private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { MyService.MyBinder binder = (MyService.MyBinder) service; mService = binder.getService();//通过这个来获取服务的实例 mBound = true; } @Override public void onServiceDisconnected(ComponentName arg0) { mBound = false; } }; public static void UpdateGUI(int s_count) { count=s_count; handler.post(RefreshText); } private static Runnable RefreshText=new Runnable() { @Override public void run() { String sa,sb,sc; int a=count0; if(a<10)sa="0"+a;else sa=String.valueOf(a); int b=(count/100)%60; if(b<10)sb="0"+b;else sb=String.valueOf(b); int c=(count/100/60)%60; if(c<10)sc="0"+c;else sc=String.valueOf(c); textView2.setText(sc+":"+sb+":"+sa); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBound=false; textView1=(TextView) findViewById(R.id.textview); textView2=(TextView) findViewById(R.id.textview_2); bt_clear=(Button) findViewById(R.id.bt_clear); bt_stop=(Button) findViewById(R.id.bt_stop); bt_start=(Button) findViewById(R.id.bt_start); bt_clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mBound==true){ mService.clearcount(); mService.countstop(); } } }); bt_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mBound==true) { mService.countstart(); } } }); bt_stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mBound==true) { mService.countstop(); } } }); } @Override protected void onStart() { super.onStart(); Intent intent=new Intent(this,MyService.class); bindService(intent,connection, Context.BIND_AUTO_CREATE); } @Override protected void onStop() { super.onStop(); unbindService(connection); mBound=false; }}activity_main.xml
感谢你能够认真阅读完这篇文章,希望小编分享的"android studio如何绑定服务和线程实现计时器"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
服务
线程
函数
功能
实验
计时器
篇文章
控制
实例
思路
时间
界面
目的
更新
不同
粗糙
事件
事情
代码
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技发展
与互联网科技公司
浩特互联网科技
丰台科技园 互联网
美国互联网黑科技
天下捷融互联网科技
广州紫鲸互联网科技
科技伦理 互联网公司
以后互联网后是啥科技
港股科技和互联网
互联网科技人工智能实验室
朱啸虎曾投资哪些互联网科技企业
互联网科技如何创业
工业互联网山东科技大学
梅州GM互联网络科技有限公司
四川互联网展示科技馆设计
青岛易易互联网科技
互联网科技大佬云集
互联网的黑科技实验室
互联网科技企业文化
手冲咖啡和咖啡机区别
科技互联网企业
嘟嘟瓜互联网科技
远拓互联网科技
南京欣网互联网科技
时间互联网络科技
齐家互联网科技有限公司
互联网汽车科技小镇
随着互联网科技发展
健康食品互联网创新科技园项目