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. 服务是在后台运行的组件,它可以在用户不与应用程序交互的情况下执行长时间运行的操作,或者为其他应用程序提供功能。例如,一个音乐播放应用可能会使用一个服务来播放音乐,即使用户退出了应用的主界面,音乐仍然可以继续播放。
相关推荐
coder_pig3 小时前
🤡 公司Android老项目升级踩坑小记
android·flutter·gradle
死就死在补习班4 小时前
Android系统源码分析Input - InputReader读取事件
android
死就死在补习班4 小时前
Android系统源码分析Input - InputChannel通信
android
死就死在补习班4 小时前
Android系统源码分析Input - 设备添加流程
android
死就死在补习班4 小时前
Android系统源码分析Input - 启动流程
android
tom4i5 小时前
Launcher3 to Launchpad 01 布局修改
android
雨白5 小时前
OkHttpClient 核心配置详解
android·okhttp
淡淡的香烟5 小时前
Android auncher3实现简单的负一屏功能
android
RabbitYao5 小时前
Android 项目 通过 AndroidStringsTool 更新多语言词条
android·python
RabbitYao6 小时前
使用 Gemini 及 Python 更新 Android 多语言 Excel 文件
android·python