Android实验:启动式service

目录

  • 实验目的
  • 实验内容
  • 实验要求
  • 项目结构
  • 代码实现
  • 结果展示

实验目的

充分理解Service的作用,与Activity之间的区别,掌握Service的生命周期以及对应函数,了解Service的主线程性质;掌握主线程的界面刷新的设计原则,掌握启动service的方式,及其工作原理

实验内容

任务1:在service中实现随机数产生;
任务2:在Activity界面实现随机数的显示,并采用启动式完成service的启动;

实验要求

1、在service中实现随机数产生;
2、实现Service中的各个生命周期函数,并理解其功能;
2、在Activity界面实现随机数的显示,每2秒更新一次;
3、采用启动式完成service的启动;

项目结构

在这里插入图片描述

代码实现

mainActivity

import android.app.Service;
import android.content.Intent;
import android.util.Log;
import android.os.IBinder;

import java.util.Random;

public class RandomNumberService extends Service {
    private static final String TAG="RandomNumberService";//日志标签
    private static final Random random=new Random();//随机数生成器
    private static int randomNumber;//随机数的变量

    @Override
    public void onCreate(){
        super.onCreate();
        Log.d(TAG,"onCreate:Service is Created");//打印日志

    }
    @Override
    public int onStartCommand(Intent intent,int flags,int startID){
        Log.d(TAG,"onStartCommand:Service activity");
        randomNumber=random.nextInt(1000);//打印随机数
        return super.onStartCommand(intent,flags,startID);
    }
    @Override
    public void onDestroy(){
        super.onDestroy();
        Log.d(TAG,"drop Service");
    }
    @Override
    public IBinder onBind(Intent intent){
        return null;//不支持绑定服务
    }
    public static int getRandomNumber(){
        return randomNumber;
    }



}

RandomNumberService

import android.app.Service;
import android.content.Intent;
import android.util.Log;
import android.os.IBinder;

import java.util.Random;

public class RandomNumberService extends Service {
    private static final String TAG="RandomNumberService";//日志标签
    private static final Random random=new Random();//随机数生成器
    private static int randomNumber;//随机数的变量

    @Override
    public void onCreate(){
        super.onCreate();
        Log.d(TAG,"onCreate:Service is Created");//打印日志

    }
    @Override
    public int onStartCommand(Intent intent,int flags,int startID){
        Log.d(TAG,"onStartCommand:Service activity");
        randomNumber=random.nextInt(1000);//打印随机数
        return super.onStartCommand(intent,flags,startID);
    }
    @Override
    public void onDestroy(){
        super.onDestroy();
        Log.d(TAG,"drop Service");
    }
    @Override
    public IBinder onBind(Intent intent){
        return null;//不支持绑定服务
    }
    public static int getRandomNumber(){
        return randomNumber;
    }



}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="36sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Exp3"
        tools:targetApi="31">
        <activity
            android:name=".mainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.Exp3">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".RandomNumberService" />
    </application>

</manifest>

结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每隔2s刷新一个随机数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/210726.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java研学-配置文件

一 配置文件 1 作用–解决硬编码的问题 在实际开发中,有时将变量的值直接定义在.java源文件中;如果维护人员想要修改数据,无法完成(因为没有修改权限),这种操作称之为硬编码 2 执行原理: 将经常需要改变的数据定义在指定类型的文件中,通过java代码对指定的类型的文件进行操作…

(C语言)找出1-99之间的全部同构数

同构数&#xff1a;它出现在平方数的右边。例&#xff1a;5是25右边的数&#xff0c;25是625右边的数&#xff0c;即5和25均是同构数。 #include<stdio.h> int main() {for(int i 1;i < 100;i ){if((i*i % 10 i) || (i*i % 100 i))printf("%d\t%d\n",i,…

神经网络(第三周)

一、简介 1.1 非线性激活函数 1.1.1 tanh激活函数 使用一个神经网络时&#xff0c;需要决定在隐藏层上使用哪种激活函数&#xff0c;哪种用在输出层节点上。到目前为止&#xff0c;只用过sigmoid激活函数&#xff0c;但是&#xff0c;有时其他的激活函数效果会更好。tanh函数…

图文深入理解TCP三次握手

前言 TCP三次握手和四次挥手是面试题的热门考点&#xff0c;它们分别对应TCP的连接和释放过程&#xff0c;今天我们先来认识一下TCP三次握手过程&#xff0c;以及是否可以使用“两报文握手”建立连接&#xff1f;。 1、TCP是什么&#xff1f; TCP是面向连接的协议&#xff0c;…

Asp.Net Core Web Api内存泄漏问题

背景 使用Asp.Net Core Web Api框架开发网站中使用到了tcp socket通信&#xff0c;网站作为服务端开始tcp server&#xff0c;其他的客户端不断高速给它传输信息时&#xff0c;tcp server中读取信息每次申请的byte[]没有得到及时的释放&#xff0c;导致内存浪费越来越多&#…

从cmd登录mysql

说明 先看看mysql.exe文件在哪个目录下&#xff0c;为了后面的操作方便&#xff0c;可以将该文件所在的路径增加到环境变量path中。 如果不增加到path环境变量中&#xff0c;那么在cmd窗口就要切换到mysql.exe文件所在的目录下执行。 在cmd窗口查看mysql命令的帮助信息 在cm…

vue中实现纯数字键盘

一、完整 代码展示 <template><div class"login"><div class"login-content"><img class"img" src"../../assets/image/loginPhone.png" /><el-card class"box-card"><div slot"hea…

【蓝桥杯软件赛 零基础备赛20周】第6周——栈

文章目录 1. 基本数据结构概述1.1 数据结构和算法的关系1.2 线性数据结构概述1.3 二叉树简介 2. 栈2.1 手写栈2.2 CSTL栈2.3 Java 栈2.4 Python栈 3 习题 1. 基本数据结构概述 很多计算机教材提到&#xff1a;程序 数据结构 算法。 “以数据结构为弓&#xff0c;以算法为箭”…

Linux shell中的函数定义、传参和调用

Linux shell中的函数定义、传参和调用&#xff1a; 函数定义语法&#xff1a; [ function ] functionName [()] { } 示例&#xff1a; #!/bin/bash# get limit if [ $# -eq 1 ] && [ $1 -gt 0 ]; thenlimit$1echo -e "\nINFO: input limit is $limit" e…

Python程序员入门指南:就业前景

文章目录 标题Python程序员入门指南&#xff1a;就业前景Python 就业数据Python的就业前景SWOT分析法Python 就业分析 标题 Python程序员入门指南&#xff1a;就业前景 Python是一种流行的编程语言&#xff0c;它具有简洁、易读和灵活的特点。Python可以用于多种领域&#xff…

Zabbix HA高可用集群搭建

Zabbix HA高可用集群搭建 Zabbix HA高可用集群搭建一、Zabbix 高可用集群&#xff08;Zabbix HA&#xff09;二、部署Zabbix高可用集群1、两个服务端配置1.1主节点 Zabbix Server 配置1.2 备节点 Zabbix Server 配置1.3 主备节点添加监控主机1.4 查看高可用集群状态 2、两个客户…

二、ZooKeeper集群搭建

目录 1、概述 2、安装 2.1 第一步&#xff1a;下载zookeeeper压缩包 2.2 第二步&#xff1a;解压 2.3 第三步&#xff1a;修改配置文件 2.4 第四步&#xff1a;添加myid配置 ​​​​​​​2.5 第五步&#xff1a;安装包分发并修改myid的值 ​​​​​​​2.6 第六步&a…

NXP iMX8M Plus Qt5 双屏显示

By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用&#xff0c;可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 Verdin iMX8M Plu…

C++11 类的新功能

新的默认成员函数 C11在6个默认成员函数基础上又加了两个:移动构造函数和移动赋值函数 针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下&#xff1a; 小结&#xff1a; &#xff08;1&#xff09; 生成默认移动构造的条件比较严苛&#xff1a;必须是没有实现析…

微软推出免费网站统计分析工具 Clarity

给大家推送一个福利&#xff0c;最近微软正式对外推出免费网站统计分析工具 Clarity&#xff0c;官方网站是&#xff1a;https://clarity.microsoft.com. 任何用户都可以直接使用&#xff0c;主打一个轻松写意——真的是傻瓜式&#xff0c;没有任何多余的步骤&#xff0c;你唯一…

上门服务系统|北京上门服务系统开发功能及特点

上门护理同城服务系统是一种以社区为基础、以提供上门护理服务为核心的服务体系。上门服务软件是一种基于移动互联网技术的服务平台&#xff0c;旨在提供高效、便捷、安全的上门服务体验。 该软件具有以下特点&#xff1a; 1、便捷性&#xff1a;用户只需在手机上安装该软件&a…

快速上手PostMan,了解PostMan的基本使用

快速上手PostMan PostMan是一个可扩展的API开发和测试协同平台工具有网页版和独立客户端,推荐安装独立客户端 创建WorkSpace工作空间 类似于GitHub的个人空间可以起到云备份的作用 发送请求 发送Get请求 发送Post请求,设置请求体的格式是表单数据即namevalue的格式 发送Pos…

【 RTTI 】

RTTI 概念&#xff1a; RTTI(Run Time Type Identification)即通过运行时类型识别&#xff0c;程序能够使用基类的指针或引用来检 查着这些指针或引用所指的对象的实际派生类型。 原因&#xff1a; C是一种静态类 型语言。其数据类型是在编译期就确定的&#xff0c;不能在运…

一文教你使用STM32CubeMX开发工具

刚开始学习 STM32 的时候&#xff0c;不知道大家有没被外设驱动支配过的恐惧&#xff1f; 那么多的外设&#xff0c;那么多的选项&#xff0c;有可能一个选项没配置对&#xff0c;外设就工作不正常了&#xff0c;大大增加我们入行的难度。 针对这个问题&#xff0c;ST 公司很…

递归实例化导致的栈溢出问题【简直蠢得出奇】

问题描述 今天在练习数据库增删改查&#xff0c;体验三层架构思想时&#xff0c;随便写了点DAO层代码&#xff0c;但服务器运行时竟然爆出了栈溢出的问题&#xff0c;说实话&#xff0c;空指针问题我还能放着耐心去代码里找找问题&#xff0c;但这个栈溢出&#xff0c;我之前就…