andorid app开发常用组件

本文介绍常用组件里面的三个:活动组件、广播组件和服务组件。

活动组件

活动组件英文名:activity。活动组件是app的基本单元,可暂时将其理解为web端的页面,尤其可视为vue单页面项目的页面,因此有生命周期函数。

Activity生命周期函数主要包括以下几个

  1. onCreate():当Activity被创建时调用,通常在这个方法中完成对用户界面的初始化,如调用setContentView()方法加载布局资源等。

  2. onStart():当Activity从不可见变为可见状态时调用。

  3. onResume():当Activity准备好与用户进行交互时调用,此时Activity位于返回栈的顶部,并接收用户的输入信息。

  4. onPause():当系统准备去启动或者恢复另一个Activity时调用,通常用于确认Uncommitted的持久化数据、停止动画等。

  5. onStop():当Activity不再可见时调用,可能是因为新的Activity实例被启动,或者是当前Activity实例被销毁。

  6. onDestroy():当Activity被销毁前调用,这是Activity的最后一个回调,通常用于做一些清理工作。

  7. onRestart():当Activity从停止状态变为运行状态时调用,也就是Activity被重新启动时。

广播组件

在Android开发中,广播接收器(BroadcastReceiver)是一种可以接收和处理来自系统或其他应用发送的广播消息的组件。

首先创建一个广播接收器。创建一个名为MyBroadcastReceiver的广播接收器,它会在接收到广播时显示一个Toast消息

java 复制代码
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Broadcast Received", Toast.LENGTH_SHORT).show();
    }
}

MyBroadcastReceiver继承BroadcastReceiver,然后在AndroidManifest.xml文件中注册这个广播接收器

xml 复制代码
<application
    ...>
    <receiver android:name=".MyBroadcastReceiver" android:exported="true">
        <intent-filter>
            <action android:name="com.example.MY_BROADCAST" />
        </intent-filter>
    </receiver>
    ...
</application>

最后在Activity中发送一个广播

java 复制代码
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent();
        intent.setAction("com.example.MY_BROADCAST");
        sendBroadcast(intent);
    }
}

在这个例子中,当MainActivity被创建时,它会发送一个名为com.example.MY_BROADCAST的广播。然后,MyBroadcastReceiver会接收到这个广播,并显示一个Toast消息。

广播还可以在activity创建过程中注册

java 复制代码
package com.example.helloa2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private MyBroadcastReceiver receiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // `super.onCreate(savedInstanceState);` 这句代码是在Android中调用父类(通常是AppCompatActivity或者Activity)的onCreate()方法。
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        receiver = new MyBroadcastReceiver();
        IntentFilter filter = new IntentFilter("com.example.MY_BROADCAST");
        registerReceiver(receiver, filter);

        Button button1 = findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("Lifecycle", "onStart222 executed");

                Intent intent = new Intent();
                intent.setAction("com.example.MY_BROADCAST");
                intent.putExtra("message", "Hello, BroadcastReceiver!");
                sendBroadcast(intent);
            }
        });
    }



}

上面这段测试通过。

服务组件

在Android系统中,服务(Service)是一种可以在后台执行长期运行操作的应用程序组件,而且它不提供用户界面。服务可以在应用的其他组件(如活动、广播接收器等)被销毁后继续在后台运行,这使得服务特别适合处理那些需要持续运行或定期运行的任务,例如检查新的邮件、播放音乐、执行文件下载等

服务的本质是一个可以在后台执行任务的组件,它的生命周期与启动它的组件(通常是一个Activity)的生命周期是独立的。这意味着即使用户退出了启动服务的Activity,服务仍然可以在后台继续运行

服务在Android系统中有两种类型:启动服务(Started Service)和绑定服务(Bound Service)。启动服务是由其他组件(如Activity)通过调用startService()方法启动的,一旦启动,服务可以在后台无限期运行,即使启动它的组件被销毁了。绑定服务是由其他组件(如Activity)通过调用bindService()方法绑定的,绑定服务允许其他组件与服务进行交互,例如获取服务的状态、调用服务的公共方法等。

总的来说,服务的本质是一个在后台执行任务的应用程序组件,它可以在没有用户交互的情况下在后台执行长期运行的任务

首先创建一个名为MyService的服务,它会在后台打印日志

java 复制代码
public class MyService extends Service {
    private static final String TAG = "MyService";

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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "Service Started");
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "Service Destroyed");
    }
}

然后需要在AndroidManifest.xml文件中注册这个服务

xml 复制代码
<application
    ...>
    <service android:name=".MyService" />
    ...
</application>

最后在Activity中启动和停止这个服务

java 复制代码
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(this, MyService.class);
        startService(intent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Intent intent = new Intent(this, MyService.class);
        stopService(intent);
    }
}

在例子中,当MainActivity被创建时,它会启动MyService服务。当MainActivity被销毁时,它会停止MyService服务。MyService服务在运行时会在后台打印日志。

总结

开工大吉!

  1. activity就是web里面页面,更接近vue当中路由概念
  2. BroadcastReceiver广播是一个组件,类似websocket,例如,当电池电量低时,系统会发送一个广播,所有注册了这个广播的应用程序都可以接收到这个信息,并做出相应的处理,如保存数据、提示用户等。
  3. 服务是在后台运行的组件,它可以在用户不与应用程序交互的情况下执行长时间运行的操作,或者为其他应用程序提供功能。例如,一个音乐播放应用可能会使用一个服务来播放音乐,即使用户退出了应用的主界面,音乐仍然可以继续播放。
相关推荐
轻口味1 分钟前
Android应用性能优化
android
全职计算机毕业设计6 分钟前
基于 UniApp 平台的学生闲置物品售卖小程序设计与实现
android·uni-app
dgiij43 分钟前
AutoX.js向后端传输二进制数据
android·javascript·websocket·node.js·自动化
SevenUUp2 小时前
Android Manifest权限清单
android
高林雨露2 小时前
Android 检测图片抓拍, 聚焦图片后自动完成拍照,未对准图片的提示请将摄像头对准要拍照的图片
android·拍照抓拍
wilanzai2 小时前
Android View 的绘制流程
android
INSBUG3 小时前
CVE-2024-21096:MySQLDump提权漏洞分析
android·adb
Mercury Random4 小时前
Qwen 个人笔记
android·笔记
苏苏码不动了5 小时前
Android 如何使用jdk命令给应用/APK重新签名。
android
aqi005 小时前
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
android·ffmpeg·音视频·直播·流媒体