美文网首页
andorid app开发常用组件

andorid app开发常用组件

作者: 头秃到底 | 来源:发表于2024-02-25 22:16 被阅读0次

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

    活动组件

    活动组件英文名: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消息

    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文件中注册这个广播接收器

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

    最后在Activity中发送一个广播

    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创建过程中注册

    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的服务,它会在后台打印日志

    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文件中注册这个服务

    <application
        ...>
        <service android:name=".MyService" />
        ...
    </application>
    
    

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

    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. 服务是在后台运行的组件,它可以在用户不与应用程序交互的情况下执行长时间运行的操作,或者为其他应用程序提供功能。例如,一个音乐播放应用可能会使用一个服务来播放音乐,即使用户退出了应用的主界面,音乐仍然可以继续播放。

    相关文章

      网友评论

          本文标题:andorid app开发常用组件

          本文链接:https://www.haomeiwen.com/subject/eyaaadtx.html