当前位置: 首页 > news >正文

【Android】【Java】【每日练手3】Android的四个主要组件使用示例

Android的四个主要组件是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。下面通过一个简单的示例来介绍这四个组件及其用法。

示例:一个简单的记事本应用

1. 活动(Activity)

活动是用户界面的基本构建块,负责显示和与用户交互。

// MainActivity.java
package com.example.notetakingapp;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addNoteButton = findViewById(R.id.add_note_button);addNoteButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, AddNoteActivity.class);startActivity(intent);}});}
}
2. 服务(Service)

服务用于执行长时间运行的操作,例如从网络下载数据,且不需要用户界面。

// NoteSyncService.java
package com.example.notetakingapp;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import androidx.annotation.Nullable;public class NoteSyncService extends Service {@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// 在这里执行同步操作new Thread(new Runnable() {@Overridepublic void run() {// 模拟同步操作syncNotes();}}).start();return START_STICKY;}private void syncNotes() {// 同步笔记的逻辑}
}
3. 广播接收器(Broadcast Receiver)

广播接收器用于接收并响应广播消息,如系统广播或应用内广播。

// NoteBroadcastReceiver.java
package com.example.notetakingapp;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class NoteBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if ("com.example.notetakingapp.NEW_NOTE_ADDED".equals(action)) {Toast.makeText(context, "新笔记已添加", Toast.LENGTH_SHORT).show();}}
}

AndroidManifest.xml中注册广播接收器:

<receiver android:name=".NoteBroadcastReceiver"><intent-filter><action android:name="com.example.notetakingapp.NEW_NOTE_ADDED" /></intent-filter>
</receiver>
4. 内容提供器(Content Provider)

内容提供器用于在不同应用之间共享数据。

// NoteContentProvider.java
package com.example.notetakingapp;import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;public class NoteContentProvider extends ContentProvider {@Overridepublic boolean onCreate() {// 初始化数据库return true;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {// 查询数据return null;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return null;}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {// 插入数据return null;}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {// 删除数据return 0;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {// 更新数据return 0;}
}

总结

通过上述例子,我们可以看到:

  • Activity用于处理用户界面和用户交互。
  • Service用于执行后台长时间运行的操作。
  • Broadcast Receiver用于接收和响应广播消息。
  • Content Provider用于在应用之间共享数据。

这些组件共同构成了一个完整的Android应用。

http://www.lryc.cn/news/375925.html

相关文章:

  • 代码随想三刷二叉树篇2
  • QT pro包含库文件目录符号含义
  • uniapp怎么进行页面的跳转
  • 数据库管理-第205期 换个角度看23ai(20240617)
  • 深入解析PHP函数
  • elasticsearch结构化搜索
  • 街道网格宣传稿件投稿我知道了好方法
  • 电脑有线无线一起用怎么设置
  • 通过LotusScript中的NotesDateTime类来进行时间计算
  • 【前端面经】数组算法题解
  • java架构设计-COLA
  • 【进阶篇-Day3:JAVA接口新特性、代码块、内部类、Lambda表达式、组件等的介绍】
  • 72-UDP协议工作原理及实战
  • 数据结构——顺序表的实现
  • 【牛客面试必刷TOP101】Day33.BM70 兑换零钱(一)和BM71 最长上升子序列(一)
  • 重构与优化-优化函数调用(5)
  • 6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高
  • 今年的618,似乎很平淡!
  • 嵌入式中间件_3.嵌入式中间件的一般架构
  • Java基础 - 练习(二)打印菱形
  • 链表OJ--超详细解析
  • JavaFX 分隔符
  • mysql安装配置教程(Linux+Windows)
  • MySQL数据库与基本操作(增删改查)
  • 【学习总结】SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习)
  • shell脚本编程(概念、编程和语句)
  • 设置角色运动的动画
  • OKR:2024年目标和关键成果常见问题
  • 轻量级 ioc/aop 框架 loveqq 1.0 发布,完全替换掉若依底层 spring 及其 starter
  • 【递归、搜索与回溯】DFS解决FloodFill算法