本文介绍常用组件里边的三个:活动组件、播送组件和服务组件。
活动组件
活动组件英文名:activity。活动组件是app的基本单元,可暂时将其理解为web端的页面,特别可视为vue单页面项目的页面,因此有生命周期函数。
Activity生命周期函数主要包括以下几个
-
onCreate():当Activity被创立时调用,一般在这个办法中完成对用户界面的初始化,如调用setContentView()办法加载布局资源等。
-
onStart():当Activity从不可见变为可见状况时调用。
-
onResume():当Activity预备好与用户进行交互时调用,此刻Activity坐落回来栈的顶部,并接收用户的输入信息。
-
onPause():当体系预备去发动或许恢复另一个Activity时调用,一般用于承认Uncommitted的持久化数据、中止动画等。
-
onStop():当Activity不再可见时调用,可能是因为新的Activity实例被发动,或许是当时Activity实例被毁掉。
-
onDestroy():当Activity被毁掉前调用,这是Activity的最后一个回调,一般用于做一些清理工作。
-
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
服务在运转时会在后台打印日志。
总结
开工大吉!
- activity便是web里边页面,更挨近vue傍边路由概念
- BroadcastReceiver播送是一个组件,相似websocket,例如,当电池电量低时,体系会发送一个播送,所有注册了这个播送的使用程序都能够接收到这个信息,并做出相应的处理,如保存数据、提示用户等。
- 服务是在后台运转的组件,它能够在用户不与使用程序交互的状况下履行长时间运转的操作,或许为其他使用程序供给功用。例如,一个音乐播放使用可能会运用一个服务来播放音乐,即便用户退出了使用的主界面,音乐依然能够持续播放。