四大组件

Android四大组件(面试篇) 基本上每次面试在这些面试中Android四大组件基本上必问,并且也会问一些细节性的问题,如果四大组件的问题不能对答如流,就让面试官感觉基础不太扎实,导致面试失败。 阅读详情

一个帖子学会Android开发四大组件

 http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html


其中关于通讯录ContentProvider使用的代码如下:

package com.example.dawning.minesweeper;

        import java.util.ArrayList;

        import android.content.ContentProviderOperation;
        import android.content.ContentProviderResult;
        import android.content.ContentResolver;
        import android.content.ContentUris;
        import android.content.ContentValues;
        import android.database.Cursor;
        import android.net.Uri;
        import android.provider.ContactsContract;
        import android.provider.ContactsContract.Data;
        import android.provider.ContactsContract.RawContacts;
        import android.provider.ContactsContract.CommonDataKinds.Email;
        import android.provider.ContactsContract.CommonDataKinds.Phone;
        import android.provider.ContactsContract.CommonDataKinds.StructuredName;
        import android.test.AndroidTestCase;
        import android.util.Log;

public class ContactsContentProvider extends AndroidTestCase{
    private static final String TAG = "ContactTest";

    /**
     * 获取通讯录中联系人
     */
    public void testGetContact(){
        ContentResolver contentResolver = this.getContext().getContentResolver();
        Uri uri = Uri.parse("content://com.android.contacts/contacts");
        Cursor cursor = contentResolver.query(uri, null, null, null, null);
        while(cursor.moveToNext()){
            // 获取联系人姓名
            StringBuilder sb = new StringBuilder();
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            sb.append("contactId=").append(contactId).append(",name=").append(name);

            //获取联系人手机号码
            Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,
                    null, null);
            while(phones.moveToNext()){
                String phone = phones.getString(phones.getColumnIndex("data1"));
                sb.append(",phone=").append(phone);
            }

            //获取联系人email
            Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,
                    null, null);
            while(emails.moveToNext()){
                String email = emails.getString(emails.getColumnIndex("data1"));
                sb.append(",email=").append(email);
            }
            Log.i(TAG, sb.toString());
            System.out.println(sb.toString());
        }
    }

    /**
     * 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
     *
     * 这是后面插入data表的数据,只有执行空值插入,才能使插入的联系人在通讯录里可见
     */
    public void testInsert(){
        ContentValues values = new ContentValues();
        //首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
        Uri rawContactUri = this.getContext().getContentResolver().insert(RawContacts.CONTENT_URI, values);
        long rawContactId = ContentUris.parseId(rawContactUri);

        //往data表入姓名数据
        values.clear();
        values.put(Data.RAW_CONTACT_ID, rawContactId);
        values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
        values.put(StructuredName.GIVEN_NAME, "zhangsan");
        this.getContext().getContentResolver().insert(
                android.provider.ContactsContract.Data.CONTENT_URI, values);

        //往data表入电话数据
        values.clear();
        values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
        values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
        values.put(Phone.NUMBER, "5554");
        values.put(Phone.TYPE, Phone.TYPE_MOBILE);
        this.getContext().getContentResolver().insert(
                android.provider.ContactsContract.Data.CONTENT_URI, values);

        //往data表入Email数据
        values.clear();
        values.put(android.provider.ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId);
        values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
        values.put(Email.DATA, "ljq218@126.com");
        values.put(Email.TYPE, Email.TYPE_WORK);
        this.getContext().getContentResolver().insert(
                android.provider.ContactsContract.Data.CONTENT_URI, values);
    }

    /**
     * 批量添加联系人,处于同一个事务中
     */
    public void testSave() throws Throwable{
        //文档位置:reference\android\provider\ContactsContract.RawContacts.html
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
        int rawContactInsertIndex = 0;
        ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
                .withValue(RawContacts.ACCOUNT_TYPE, null)
                .withValue(RawContacts.ACCOUNT_NAME, null)
                .build());

        //文档位置:reference\android\provider\ContactsContract.Data.html
        ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                .withValue(StructuredName.GIVEN_NAME, "lisi")
                .build());
        ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                .withValue(Phone.NUMBER, "5556")
                .withValue(Phone.TYPE, Phone.TYPE_MOBILE)
                .withValue(Phone.LABEL, "")
                .build());
        ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
                .withValue(Email.DATA, "lisi@126.cn")
                .withValue(Email.TYPE, Email.TYPE_WORK)
                .build());

        ContentProviderResult[] results = this.getContext()
                .getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);
        for (ContentProviderResult result : results) {
            Log.i(TAG, result.uri.toString());
        }
    }

}


AMS管理android四大组件 ActivityManageService管理四大组件AMS是android中SystemServer进程中的一个线程,单从名字看以为只是管理Activity ,其实AMS是管理四大组件运行状态的系统服务线程。 1.SystemServer进程启动AMSSystemServer.java中的关键源码,如下:private void startBootstrapServices() { 阅读详情

相关推荐

Windows显卡TDR超时导致Unity崩溃?手把手教你修改注册表延长响应时间

本文详细解析了Windows显卡TDR超时导致Unity崩溃的问题,并提供了修改注册表延长响应时间的完整解决方案。通过调整TdrDelay和TdrDdiDelay键值,开发者可以有效避免D3D11设备丢失错误,提升Unity编辑器的稳定性。文章还包含显卡驱动优化、系统性能调优等实用技巧,帮助开发者彻底解决编辑器崩溃问题。

weixin_33737774的博客 623

Android开发四大组件

这个文章主要是讲Android开发的四大组件,本文主要分为 一、Activity详解 二、Service详解 三、Broadcast Receiver详解 四、Content Provider详解 外加一个重要组件 intent的详解。 文章有部分内容来自网络,本文是一个总结性文章。 一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。

hlf48641715的专栏 1584

Geant4学习一:写一个简单程序

1、 基本介绍

ccwwNUAA的博客 7698

四大基本组件入门了解

安卓四大基本组件初步学习 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 这里看到了熟悉的Activity,之前写过一篇关于Activity的文章,那这里就不重复详细介绍了。 下面简述四大组件的功能: 四大组件的基本功能 Service服务   一个Service ...

在下嘿嘿的博客 1031

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 270

别只刷题了!我用834分经验告诉你,华为HCIP大数据考试(H13-723)这样准备更高效

本文分享了华为HCIP大数据认证(H13-723)834分通关的高效备考经验。通过分析考试动态、题库验证技巧和章节优先级策略,帮助考生超越单纯刷题,系统化掌握核心知识点。特别强调实时流处理和离线批处理等重点章节,提供黄金90分钟临场发挥策略,助力考生一次性通过考试。

weixin_38168786的博客 459

四大组件的区别与联系

活动(Activity)、服务(Service)、广播(BroadcastReceiver)和内容提供者(Contentprovider)合称Android四大组件。其中除了Activity是以界面的形式呈现的,其他三大组件对于用户都是透明的。        Activity是一种展示型组件,具有两种启动方式,一种是显示的,通过intent实现;另一种是隐式的,也需要intent,但还需要在An

ding_ding_123的博客 1914

红米k60 修复“NV损坏” 去除主板校验电阻步骤解析与图示

红米k60 基带代码:mondrian。搭载‌高通骁龙8+ Gen1处理器.国外版本称:POCO F5 Pro适用于以下型号的小米机型:23013RK75C, 23013PC75G。 💝💝💝通过博文了解 1💝💝💝-----此机型修复NV损坏硬件类操作主板图示 2💝💝💝-----了解设备出现NV损坏的底层逻辑 3💝💝💝 ------具体修改步骤

小马哥的专栏 394

Android中的四大组件详解

Android中的四大组件详解 我们都知道Android系统应用层框架中,为开发者提供了四大组件来便于应用的开发,它们是Activity、Service、BroadcastReceiver、ContentProvider。 它们用于在应用开发过程中,不同场景的功能实现。 Activity:Activity是开发中最常用的,也是最复杂的一个组件。它是用户可以专注做一些事情的东西。它的主要功能就是可以和用户进行交互操作,所以几乎所有的Activity都会负责创建一个显示窗口,然后通过setContentView

joye123的博客 7562

基于OpenClaw的AI数字员工协同团队架构设计

随着大型语言模型从被动的文本生成器向具备自主规划与执行能力的智能代理演进,企业级人工智能的应用范式正在发生根本性转变。在这一演进过程中,OpenClaw(前身为Clawdbot及Moltbot)作为一种开源的、本地优先的个人AI智能体网关基础设施,凭借其对持续内存、多通道接入以及沙盒化工具执行的原生支持,迅速成为构建“始终在线”数字劳动力的核心框架 1。然而,将单体个人助理扩展为能够处理复杂业务逻辑、支持跨组织协同并严格保障数据隔离的多智能体(Multi-Agent)团队,绝非简单的API拼接。系统架构必须

形上得其象,形下合于数;阴阳自济,玄理自明。 1048

基于Spring Boot + Vue 3构建高并发华为数码商城交易平台:全栈架构设计与实现

内容将涵盖系统架构、数据库设计、核心模块开发(用户、商品、订单、购物车)、安全认证、性能优化以及前后端分离部署等关键环节,并提供详尽的代码示例,旨在为开发者提供一个可落地的企业级项目实战指南。<el-button text class="button" @click.stop="addToCart(product)">加入购物车</el-button>.antMatchers("/api/user/login", "/api/user/register").permitAll() // 公开接口。

2201_76125393的博客 306

Android四大组件详解

Android四大组件详解 文章目录Android四大组件详解四大组件的不同点一、Activity二、Service三、Broadcast Receiver四、Content Provider四大组件相同点4大组件的注册4大组件的激活4大组件的关闭android中的任务(activity栈) Android四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。 活动(activity)是所有A

爱笑的博客 1万+

在 SAP 系统中设置成本中心(Cost Center)和利润中心(Profit Center)需在管理会计(CO)模块中完成,涉及主数据创建、组织结构配置等步骤

本文详细介绍了SAP系统中成本中心和利润中心的设置流程。成本中心设置包括:配置成本控制范围、定义标准层次结构、创建主数据(KS01/KS02/KS03)等步骤。利润中心设置需先激活利润中心会计功能,再定义标准层次并创建主数据(KE01/KE02/KE03)。关键是将成本中心与利润中心关联,实现成本数据自动流向利润中心。最后可通过相关报表验证设置是否生效。整个流程强调主数据创建和组织结构关联,以实现成本归集和利润分析功能。

金牌架构师 2222

安卓开发-03-四大组件

Android开发的四大组件

ning_xiao_xuan的博客 4798

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android 四大组件全面解析

Activity:主线程 5 秒内未响应输入事件(如点击、触摸);Service:主线程 20 秒内未完成或onBind();方法 10 秒内未执行完毕;:主线程执行query()等操作超过 10 秒(间接导致 ANR)。解决方式:耗时操作放在子线程,避免阻塞主线程。

2401_89387076的博客 1749

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android四大组件

仅供自己学习使用-转载请注明文中内容出自哪里(我已不知道哪里复制的) 目录 一、活动(Activity) 1.概念 2.生命周期 3.Intent 4.Activity启动模式和任务栈 二、服务(Service) 1.概念 2.生命周期 3.启动方式 三、广播接收者(Broadcast Receive) 1.概念 2.注册方式 四、内容提供者(Content Provider) 1.概念 2.用途 Android 系统的四大组件分别是:活动(activit...

小小怪大人物de博客 4896

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android四大组件基础学习之Activity

Android四大组件基础学习之Activity

Y3036359510的博客 1700

【Android】四大组件

Activity管界面,Service管后台,BroadcastReceiver管消息,ContentProvider管数据。

贫道绝缘子的博客 2713

Android 四大组件

Android四大组件是指Activity、Service、Broadcast Receiver和Content Provider这四个核心组件。它们是构建Android应用程序的基本构建块,各自承担不同的角色和功能,同时也可以相互交互与通信。Activity是用户界面的展示层,负责呈现应用程序的界面给用户。它主要处理与用户的交互,接受用户输入、展示数据等。Activity可以启动其他Activity,实现界面的切换和跳转。

weixin_59600504的博客 488

Android开发学习之四大组件

Android四大组件详解 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并

逍遥飞鹤的专栏 2893

Android的四大组件

ContentProvider是Android的四大应用组件之一,当前应用使用ContentProvider将数据库表数据操作暴露给其它应用访问,其它的应用需要使用ContentResolver来调用ContentProvider的方法,它们之间的调用是通过Uri来进行交流的;singleTop如果已经有一个实例位于Activity栈的顶部时,就不会产生新的实例,如果不位于栈顶,会产生一个新的实例;实际情况一个应用的数据库文件是应用私有的,其它应用不能直接访问;......................

m0_46689661的博客 4170

android 四大组件

android 四大组件基础

yuanchunsi的博客 676

四大组件的工作过程

Android系统中的四大组件是构成Android应用程序的基础。包括Activity、Service、BroadcastReceiver、ContentProvider。Android开发中无时无刻不在使用这四大组件。因此了解它们的工作过程能让我们对四大组件的理解更加深刻,同时对Android系统的认识更加清晰。

八归少年 1289

【Android学习】(二)四大组件

最近需要通过一些安卓Demo来学习熟悉部门相关业务。本文梳理里APP开发的基本信息(应用层面初步了解),解四大组件,(重点活动+服务)

m0_37659309的博客 2228

android 四大组件和handler、looper

在 Android 开发中,Handler 是一个用于管理线程间通信的类,它允许你发送和处理 Message 和 Runnable 对象与一个消息队列(MessageQueue)关联的线程。Service 可以是启动的(started)或绑定的(bound),这决定了它与其他组件的交互方式。生命周期:Activity 有一个复杂的生命周期,包括创建(onCreate)、启动(onStart)、恢复(onResume)、暂停(onPause)、停止(onStop)和销毁(onDestroy)等状态。

lijunlin0329的博客 2115

Android中的四大组件

Android中的四大组件——Activity、Service、BroadcastReceiver和ContentProvider,各自承担着不同的角色和功能,共同构成了Android应用程序的基石。Activity负责与用户交互和界面展示;Service负责在后台执行长时间运行的操作;BroadcastReceiver负责接收系统或应用程序内部的广播消息;ContentProvider负责在不同应用程序之间共享数据。这四个组件相互配合,使得Android应用程序能够实现丰富的功能和良好的用户体验。

Dingdangr的博客 2773
上一篇: Android屏幕适配
下一篇: Activity的四种加载模式
觅己
博客等级 码龄11年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值