博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用线程持续产生随机数
阅读量:5259 次
发布时间:2019-06-14

本文共 3577 字,大约阅读时间需要 11 分钟。

功能描述:

        点击'启动service’按钮后启动后台线程,点击“停止service”按钮后关闭线程。后台线程每一秒产生一个随机数,并通过Handler将产生的随机数显示在用户界面上。

activity_main.xml文件

 

MainActivity.java文件

package com.example.pprp.myapplication2_lh;import android.app.Activity;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {    private static TextView tv01=null;    Button btnstart;    Button btnstop;    private static Handler handler=new Handler();    private static double randomnum;    public static void UpdateGUI(double refreshDouble){        randomnum=refreshDouble;        handler.post(RefreshLable);    }    private static Runnable RefreshLable=new Runnable() {        @Override        public void run() {            tv01.setText(String.valueOf(randomnum));        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv01=(TextView)findViewById(R.id.tv01);        btnstart=(Button)findViewById(R.id.btnstart);        btnstop=(Button)findViewById(R.id.btnstop);        final Intent serviceintent=new Intent(this,ThreadActivity.class); //连接两个java文件的媒介        btnstart.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                startService(serviceintent); //开始线程            }        });        btnstop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                stopService(serviceintent); //停止线程            }        });    }}

 

ThreadActivity .java文件
package com.example.pprp.myapplication2_lh;import android.app.Activity;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.support.annotation.Nullable;import android.widget.TextView; /** * Created by lh on 2018/11/21. */public class ThreadActivity extends Service{    private Thread thread;    @Override    public void onCreate() {        super.onCreate();        thread=new Thread(null,backgroundwork,"thread"); //创建线程,将Runnable对象作为参数传递给thread,第三个参数是线程的名称     }    @Override    public void onStart(Intent intent, int startId) {        super.onStart(intent, startId);        if(!thread.isAlive()){            thread.start();        }    }    @Override    public void onDestroy() {        super.onDestroy();        thread.interrupt();    }    @Nullable    @Override    public IBinder onBind(Intent intent) {        return null;    }    private Runnable backgroundwork=new Runnable() { //在run()中放置代码的主体部分        @Override        public void run() {            try {                while(!thread.interrupted()){                    double randomnum=Math.random();                    MainActivity.UpdateGUI(randomnum);                    Thread.sleep(1000);                }            }catch (InterruptedException e){                e.printStackTrace();            }        }    };}

 

AndroidManifest.xml文件:新建立的threadactivity.java文件是service类型,所以在AndroidManifest.xml中注册时需注意写成service.

 

转载于:https://www.cnblogs.com/loyolh/p/9997445.html

你可能感兴趣的文章
Android内存优化之内存缓存
查看>>
常见邮件服务器软件
查看>>
shell数组等基本用法
查看>>
HTTP知识普及系列:构建Web内容的技术
查看>>
对象图(Object Diagram)—UML图(三)
查看>>
随VS 11 Beta 发布的web page 2的问题
查看>>
ubuntu下配置SSH服务以及SecureCRT工具的使用
查看>>
C语言博客作业--函数嵌套调用
查看>>
屏幕内跟随鼠标移动(鼠标点击一个位置,物体移动到该位置)
查看>>
gym-101343F-Abdalrahman Ali Bugs
查看>>
【Ceisum】Max转GLTF
查看>>
【云计算】Docker Nginx示例
查看>>
像建筑设计师一样去写程序
查看>>
报表性能优化方案之报表取数
查看>>
d3 曲线区域填充
查看>>
C#装箱拆箱
查看>>
Docker Machine
查看>>
CI-Based Web Service Error:UserName not defined in database
查看>>
object -c OOP , 源码组织 ,Foundation 框架 详解1
查看>>
【零基础学习App嵌入广告】【01-开篇】
查看>>