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

活动组件

活动组件英文名: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. 服务是在后台运转的组件,它能够在用户不与使用程序交互的状况下履行长时间运转的操作,或许为其他使用程序供给功用。例如,一个音乐播放使用可能会运用一个服务来播放音乐,即便用户退出了使用的主界面,音乐依然能够持续播放。