栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

实验三、启动式service

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实验三、启动式service

实验三、启动式service

链接: 大佬原文:我很好请走开谢谢.
【实验名称】实验三、启动式service
【实验目的】
充分理解Service的作用,与Activity之间的区别,掌握Service的生命周期以及对应函数,了解Service的主线程性质;掌握主线程的界面刷新的设计原则,掌握启动service的方式,及其工作原理;
【实验内容】
任务1:在service中实现随机数产生;
任务2:在Activity界面实现随机数的显示,并采用启动式完成service的启动;
【实验要求】
1、在service中实现随机数产生;
2、实现Service中的各个生命周期函数,并理解其功能;
2、在Activity界面实现随机数的显示,每2秒更新一次;
3、采用启动式完成service的启动;

(请完成如下部分)

【实验设计】

1、Main3Activity.java

通过启动式 创建Service,点击开始后调用Intent以显式 的方式调用:RandomService.Java。
当点击开始按钮时,调用startService(serviceIntent);方法启动service,

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

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.liu.myapplication01.R;

public class Main3Activity extends AppCompatActivity {

    private static Handler handler = new Handler();
    private static TextView labelView = null;
    private static double randomDouble;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        labelView =(TextView) findViewById(R.id.randomname);
        Button start =(Button) findViewById(R.id.startrandom);
        Button stop =(Button) findViewById(R.id.stoprandom);
        final Intent serviceIntent = new Intent(Main3Activity.this,RandomService.class);
        start.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View view){
                startService(serviceIntent);
            }
        });
        stop.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View view){
                stopService(serviceIntent);
            }
        });
    }

    

    public static void UpdateGUI(double refreshDouble){
        randomDouble = refreshDouble;
        handler.post(RefreshLable);
    }

    
    private static Runnable RefreshLable = new Runnable() {
        @Override
        public void run() {
            labelView.setText(String.valueOf(randomDouble));
        }
    };
}

2、RandomService.java

调用进程:workThread = new Thread(null,backgroundWork,"WorkThread");
以2000ms为周期生成随机数
调用其中使用方法:UpdateGUI() 将生成的随机数抛到Lopper队列中,直到Runnable对象中的 run() 方法被调用,从而使随机数 回显到原来的文本框中。
public class RandomService extends Service {
    private Thread workThread;

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

    @Override
    public void onCreate() {
        super.onCreate();
        System.out.println("onCreate");
        //线程组,需要执行的Runnable对象,线程的名称
        workThread = new Thread(null,backgroundWork,"WorkThread");
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        if(!workThread.isAlive()){
            System.out.println("onStart");
            workThread.start();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        workThread.interrupt();
    }

    private Runnable backgroundWork = new Runnable() {
        @Override
        public void run() {
            try {
                while(!Thread.interrupted()){
                    double random = Math.random();
                    System.out.println(random);
                    Main3Activity.UpdateGUI(random);
                    Thread.sleep(2000);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
}

3、activity_main3.xml





        android:layout_width="379dp"
        android:layout_height="35dp">

        

        


    


        

【实验结果】
虚拟机:

【实验分析或心得】
·service的作用:在后台完成用户指定的操作
  ·包括两种状态:
·启动状态,startService()启动,可在后台无期限运行,手动调用才能停止
·绑定状态, bindService() 与其他组件绑定后开始运行
     ·service 与Activity的区别:
·Activity和Service的生命周期不一样,Activity处在哪个生命周期是由系统控制的,service是由程序控制的,service不能自己启动,而且service不与用户交互。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425348.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号