`
wh007_cx
  • 浏览: 29652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【ZT】Android Activity和Intent机制学习

阅读更多

Activity

Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html,由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态)。

对于Activity,关键是其生命周期的把握(如下图),其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity之间的跳转和数据传输(intent)。

activity_lifecycle

Activity中常用的函数有SetContentView()   findViewById()    finish()   startActivity(),其生命周期涉及的函数有:

void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

注意的是,Activity的使用需要在Manifest文件中添加相应的<Activity>,并设置其属性和intent-filter。

Intent

Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在SDK中给出了Intent作用的表现形式为:

Intent属性的设置,包括以下几点:(以下为XML中定义,当然也可以通过Intent类的方法来获取和设置)

(1)Action,也就是要执行的动作

SDk中定义了一些标准的动作,包括

onstant Target component Action
ACTION_CALL activity Initiate a phone call.
ACTION_EDIT activity Display data for the user to edit.
ACTION_MAIN activity Start up as the initial activity of a task, with no data input and no returned output.
ACTION_SYNC activity Synchronize data on a server with data on the mobile device.
ACTION_BATTERY_LOW broadcast receiver A warning that the battery is low.
ACTION_HEADSET_PLUG broadcast receiver A headset has been plugged into the device, or unplugged from it.
ACTION_SCREEN_ON broadcast receiver The screen has been turned on.
ACTION_TIMEZONE_CHANGED broadcast receiver The setting for the time zone has changed.

 

当然,也可以自定义动作(自定义的动作在使用时,需要加上包名作为前缀,如"com.example.project.SHOW_COLOR”),并可定义相应的Activity来处理我们的自定义动作。

(2)Data,也就是执行动作要操作的数据

Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。对于不同的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为content: URIs。

(3)type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

(4)category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。还有其他的为

Constant Meaning
CATEGORY_BROWSABLE The target activity can be safely invoked by the browser to display data referenced by a link — for example, an image or an e-mail message.
CATEGORY_GADGET The activity can be embedded inside of another activity that hosts gadgets.
CATEGORY_HOME The activity displays the home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed.
CATEGORY_LAUNCHER The activity can be the initial activity of a task and is listed in the top-level application launcher.
CATEGORY_PREFERENCE The target activity is a preference panel.

 

(5)component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。

(6)extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者;另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合。

对于显式Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些隐式Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。        

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:

  • 如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;
  • 如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。
  • 如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto:) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。
  • 如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

Intent-Filter的定义

一些属性设置的例子:

<action android:name="com.example.project.SHOW_CURRENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="video/mpeg" android:scheme="http" . . . /> 
<data android:mimeType="image/*" />
<data android:scheme="http" android:type="video/*" />

完整的实例

<activityandroid:name="NotesList"android:label="@string/title_notes_list">
            <intent-filter>
                <actionandroid:name="android.intent.action.MAIN"/>
                <categoryandroid:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <actionandroid:name="android.intent.action.VIEW"/>
                <actionandroid:name="android.intent.action.EDIT"/>
                <actionandroid:name="android.intent.action.PICK"/>
                <categoryandroid:name="android.intent.category.DEFAULT"/>
                <dataandroid:mimeType="vnd.android.cursor.dir/vnd.google.note"/>
            </intent-filter>
            <intent-filter>
                <actionandroid:name="android.intent.action.GET_CONTENT"/>
                <categoryandroid:name="android.intent.category.DEFAULT"/>
                <dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
            </intent-filter>
        </activity>

Intent用法实例

1.无参数Activity跳转

Intent it = new Intent(Activity.Main.this, Activity2.class);
startActivity(it);   

 

2.向下一个Activity传递数据(使用Bundle和Intent.putExtras)

Intent it = new Intent(Activity.Main.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("name", "This is from MainActivity!");
it.putExtras(bundle);       // it.putExtra(“test”, "shuju”);
startActivity(it);            // startActivityForResult(it,REQUEST_CODE);

 

对于数据的获取可以采用:

Bundle bundle=getIntent().getExtras();
String name=bundle.getString("name");

 

3.向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)

        Intent intent=getIntent();
        Bundle bundle2=new Bundle();
        bundle2.putString("name", "This is from ShowMsg!");
        intent.putExtras(bundle2);
        setResult(RESULT_OK, intent);

 

4.回调上一个Activity的结果处理函数(onActivityResult)

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==REQUEST_CODE){
            if(resultCode==RESULT_CANCELED)
                  setTitle("cancle");
            else if (resultCode==RESULT_OK) {
                 String temp=null;
                 Bundle bundle=data.getExtras();
                 if(bundle!=null)   temp=bundle.getString("name");
                 setTitle(temp);
            }
        }
    }

 

下面是转载来的其他的一些Intent用法实例(转自javaeye)

显示网页
   1. Uri uri = Uri.parse("http://google.com");  
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
   3. startActivity(it);

显示地图
   1. Uri uri = Uri.parse("geo:38.899533,-77.036476");  
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);   
   3. startActivity(it);   
   4. //其他 geo URI 範例  
   5. //geo:latitude,longitude  
   6. //geo:latitude,longitude?z=zoom  
   7. //geo:0,0?q=my+street+address  
   8. //geo:0,0?q=business+near+city  
   9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom

路径规划
   1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");  
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
   3. startActivity(it);  
   4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456 

打电话
   1. //叫出拨号程序 
   2. Uri uri = Uri.parse("tel:0800000123");  
   3. Intent it = new Intent(Intent.ACTION_DIAL, uri);  
   4. startActivity(it);  
   1. //直接打电话出去  
   2. Uri uri = Uri.parse("tel:0800000123");  
   3. Intent it = new Intent(Intent.ACTION_CALL, uri);  
   4. startActivity(it);  
   5. //用這個,要在 AndroidManifest.xml 中,加上  
   6. //<uses-permission id="android.permission.CALL_PHONE" /> 

传送SMS/MMS
   1. //调用短信程序 
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
   3. it.putExtra("sms_body", "The SMS text");   
   4. it.setType("vnd.android-dir/mms-sms");  
   5. startActivity(it); 
   1. //传送消息 
   2. Uri uri = Uri.parse("smsto://0800000123");  
   3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  
   4. it.putExtra("sms_body", "The SMS text");  
   5. startActivity(it); 
   1. //传送 MMS  
   2. Uri uri = Uri.parse("content://media/external/images/media/23");  
   3. Intent it = new Intent(Intent.ACTION_SEND);   
   4. it.putExtra("sms_body", "some text");   
   5. it.putExtra(Intent.EXTRA_STREAM, uri);  
   6. it.setType("image/png");   
   7. startActivity(it); 

传送 Email
   1. Uri uri = Uri.parse("mailto:xxx@abc.com");  
   2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);  
   3. startActivity(it); 


   1. Intent it = new Intent(Intent.ACTION_SEND);  
   2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");  
   3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");  
   4. it.setType("text/plain");  
   5. startActivity(Intent.createChooser(it, "Choose Email Client")); 


   1. Intent it=new Intent(Intent.ACTION_SEND);    
   2. String[] tos={"me@abc.com"};    
   3. String[] ccs={"you@abc.com"};    
   4. it.putExtra(Intent.EXTRA_EMAIL, tos);    
   5. it.putExtra(Intent.EXTRA_CC, ccs);    
   6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");    
   7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    
   8. it.setType("message/rfc822");    
   9. startActivity(Intent.createChooser(it, "Choose Email Client"));


   1. //传送附件
   2. Intent it = new Intent(Intent.ACTION_SEND);  
   3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  
   4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");  
   5. sendIntent.setType("audio/mp3");  
   6. startActivity(Intent.createChooser(it, "Choose Email Client"));

播放多媒体
       Uri uri = Uri.parse("file:///sdcard/song.mp3");  
       Intent it = new Intent(Intent.ACTION_VIEW, uri);  
       it.setType("audio/mp3");  
       startActivity(it); 
       Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");  
       Intent it = new Intent(Intent.ACTION_VIEW, uri);  
       startActivity(it);

Market 相关
1.        //寻找某个应用 
2.        Uri uri = Uri.parse("market://search?q=pname:pkg_name"); 
3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);  
4.        startActivity(it);  
5.        //where pkg_name is the full package path for an application 
1.        //显示某个应用的相关信息 
2.        Uri uri = Uri.parse("market://details?id=app_id");  
3.        Intent it = new Intent(Intent.ACTION_VIEW, uri); 
4.        startActivity(it);  
5.        //where app_id is the application ID, find the ID   
6.        //by clicking on your application on Market home   
7.        //page, and notice the ID from the address bar

Uninstall 应用程序
1.        Uri uri = Uri.fromParts("package", strPackageName, null); 
2.        Intent it = new Intent(Intent.ACTION_DELETE, uri);   
3.        startActivity(it); 

分享到:
评论

相关推荐

    GIB 8114的规则,检测器,checker

    GIB 8114的规则,检测器,checker

    Sunny+duan-大模型安全挑战与实践:构建+AI+时代的安全防线.pdf

    Con北京站聚焦技术落地与前沿趋势,核心方向包括: ​​AI工程化​​:端侧推理、RAG增强、多模态生成成为主流; ​​云原生深水区​​:混合云治理、湖仓一体架构、可观测性技术持续迭代; ​​安全与效能​​:大模型安全防御、研发流程标准化、平台工程价值凸显; ​​行业融合​​:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。

    shotcut22.06.23.exe

    shotcut22.06.23

    李志伟-端侧大模型的安全建设:如何在算力与保障之间找到平衡.pdf

    Con北京站聚焦技术落地与前沿趋势,核心方向包括: ​​AI工程化​​:端侧推理、RAG增强、多模态生成成为主流; ​​云原生深水区​​:混合云治理、湖仓一体架构、可观测性技术持续迭代; ​​安全与效能​​:大模型安全防御、研发流程标准化、平台工程价值凸显; ​​行业融合​​:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。

    基于MATLAB/Simulink的电动汽车转弯制动ABS与DYC联合控制模型

    内容概要:本文详细介绍了利用MATLAB/Simulink构建的电动汽车转弯制动模型,该模型集成了防抱死系统(ABS)和直接横摆力矩控制(DYC)。模型采用7自由度设置,涵盖车身纵向、横向、横摆运动以及四个车轮的旋转自由度。文中重点讨论了轮胎魔术公式的实现、滑移率观测器的设计、滑模控制的应用及其参数调试,并展示了双移线工况下的仿真结果。结果显示,在启用联合控制系统后,车身横摆角显著降低,制动距离缩短,证明了系统的有效性。 适合人群:从事汽车电子控制、自动驾驶技术研发的工程师和技术爱好者。 使用场景及目标:适用于研究电动汽车在极端驾驶条件下(如急转弯、紧急制动)的安全性和稳定性控制策略。目标是提高车辆操控性能,确保行驶安全。 其他说明:建议读者关注模型中的关键参数选择和调试技巧,尤其是轮胎模型参数、滑模控制参数以及电机响应延迟等方面的内容。此外,模型提供了丰富的参考资料,便于深入理解和优化控制算法。

    3dmax插件032-阵列多物体.ms

    3dmax插件

    基于PyTorch的MobileNetV1-UNet图像分割项目:快速部署与高效训练

    内容概要:本文介绍了一个基于PyTorch框架的MobileNetV1-UNet图像分割项目,涵盖了从模型构建、训练到预测的完整流程。该项目利用MobileNetV1的深度可分离卷积作为编码器,结合UNet的经典跳跃连接进行解码,实现了轻量级且高效的语义分割。项目中包含了详细的代码实现,如深度可分离卷积、解码器模块、训练脚本、预测脚本以及数据预处理方法。此外,还介绍了如何应对数据集不均衡的问题,优化训练过程,并提供了一些实用的小技巧,如动态学习率调整、数据增强和后处理方法。最终,项目在街景分割任务中表现出色,能够在较低硬件配置下实现高速推理。 适合人群:具有一定深度学习基础的研究人员和开发者,特别是对图像分割感兴趣的从业者。 使用场景及目标:适用于需要快速搭建图像分割系统的场景,如医疗影像分析、自动驾驶、安防监控等领域。目标是帮助用户快速上手并应用于实际项目中,提高开发效率。 其他说明:项目已准备好完整的数据集和预训练模型,用户只需解压即可开始训练和预测。代码经过精心优化,在常见GPU上能够稳定运行,适合初学者和有一定经验的开发者使用。

    信捷触摸屏与士林变频器Modbus通讯实战指南:硬件接线、参数配置及常见问题解决方案

    内容概要:本文详细介绍了信捷触摸屏与士林变频器通过Modbus RTU协议进行通讯的方法和注意事项。首先,强调了正确的硬件接线方法,如使用双绞线并在适当情况下增加120Ω终端电阻。其次,详细解释了参数配置的具体步骤,包括波特率、站号、数据格式等设置。接着,提供了读写频率和其他重要参数的代码实现,并指出了常见的地址偏移和数据格式转换问题。最后,针对通讯超时等问题提出了具体的排查方法和解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责触摸屏与变频器通讯调试工作的人员。 使用场景及目标:帮助工程师快速定位和解决信捷触摸屏与士林变频器之间的通讯问题,提高工作效率,减少调试时间和成本。 其他说明:文中还提供了一些实用的小技巧,如使用Modscan工具进行初步测试,以及通过报文抓取法分析通讯数据,有助于更好地理解和解决问题。

    Delphi 12.3控件之TextShaping4Delphi-main.zip

    Delphi 12.3控件之TextShaping4Delphi-main.zip

    LabVIEW 2018纯软件波形发生器:基于事件结构与生产者-消费者模式的多波形生成与噪声叠加

    内容概要:本文详细介绍了使用LabVIEW 2018构建一个纯软件波形发生器的方法。该波形发生器能够生成四种基本波形(正弦波、方波、三角波、锯齿波),并且可以通过参数设置进行实时调整。此外,还可以向波形中加入噪声,模拟真实环境中的信号。文中详细解释了波形生成的核心算法、噪声叠加的技术细节以及波形显示的优化方法。通过事件结构和生产者-消费者模式实现了高效的参数联动和实时波形更新。 适合人群:对LabVIEW有一定了解的工程师和技术爱好者,尤其是从事信号处理和仿真工作的专业人士。 使用场景及目标:适用于需要生成各种波形用于实验、教学或产品研发的场合。主要目标是帮助用户掌握LabVIEW中波形生成的基本原理和技术细节,提高波形生成的灵活性和实用性。 其他说明:文中提供了许多调试经验和优化技巧,如参数联动、噪声合成、波形图刷新等方面的注意事项,有助于用户更好地理解和应用LabVIEW进行波形生成。

    FPGA图像处理:MIPI CSI-2接收、Debayer转换及USB3.0 UVC传输的实现与优化

    内容概要:本文详细介绍了基于Lattice MachXO3LF-690 FPGA的MIPI相机系统的实现,涵盖MIPI CSI-2接收、Debayer转换、RGB转YUV以及USB3.0 UVC传输等多个关键技术环节。首先,MIPI CSI-2接收部分通过状态机解析RAW10数据流并进行字节对齐,确保数据正确传输。其次,Debayer模块采用梯度插值法和乒乓缓存结构,优化资源利用率并提高处理速度。接着,RGB转YUV模块使用定点数运算代替浮点运算,减少逻辑资源消耗。最后,FX3014的UVC传输部分实现了动态帧率控制和带宽管理,确保不同分辨率下的稳定传输。文中还分享了多个调试经验和优化技巧,如动态FIFO控制、帧率控制策略等。 适合人群:具备一定FPGA开发经验的工程师和技术爱好者,特别是对图像处理和高速数据传输感兴趣的读者。 使用场景及目标:适用于希望深入了解FPGA图像处理流程的技术人员,帮助他们掌握从传感器数据接收、图像处理到USB传输的全流程实现方法,提升系统性能和稳定性。 其他说明:文中提供了详细的Verilog代码片段和架构图解,便于读者理解和实践。此外,还提到了一些常见的调试问题及其解决方案,有助于加速项目开发进程。

    基于LabVIEW的多设备并行控制系统设计与实现

    内容概要:本文详细介绍了使用LabVIEW开发的一个多设备并行控制系统,主要应用于工业自动化领域。系统能够同时控制六台烘干设备,并支持不停机扩展新设备。核心技术包括利用子面板(Subpanel)实现动态加载设备界面,通过Modbus TCP/IP协议与PLC通信,以及采用事件结构实现控制权切换等功能。文中还分享了一些调试经验和性能优化技巧,如内存管理和通信稳定性等方面的问题及其解决方案。 适合人群:对LabVIEW编程有一定基础,从事工业自动化控制系统的开发人员和技术爱好者。 使用场景及目标:适用于需要在同一上位机上同时监控和控制多台设备的应用场合,旨在提高操作效率,减少人工干预,确保系统稳定性和扩展性。 其他说明:文中提到的一些具体实现细节和技术难点对于理解和掌握LabVIEW编程非常有帮助,尤其是关于多实例并行处理的部分。此外,作者还提到了一些常见的错误案例及其修正方法,有助于读者规避类似问题。

    1.6 技能提升:设计一份个人简历.rp

    1.6 技能提升:设计一份个人简历.rp

    MATLAB/Simulink仿真:交直流微电网中光伏、蓄电池、风机的并离网切换与虚拟同步发电机技术

    内容概要:本文详细介绍了如何在MATLAB/Simulink环境中对交直流微电网进行仿真,涵盖了光伏、风机和蓄电池的建模方法及其在不同运行模式下的控制策略。具体包括光伏系统的MPPT控制、风机的变桨距控制、蓄电池的充放电管理、并离网切换的逻辑控制以及虚拟同步发电机技术的应用。通过这些仿真实验,可以深入理解微电网的工作原理和技术难点,为实际工程应用提供了宝贵的参考。 适合人群:从事电力系统、新能源技术和自动化控制领域的研究人员和工程师,尤其是对微电网仿真感兴趣的初学者和有一定经验的研发人员。 使用场景及目标:适用于高校科研项目、企业技术研发部门等场合,旨在帮助用户掌握微电网仿真技术,优化系统设计,提高微电网的稳定性和可靠性。 其他说明:文中提供了大量具体的MATLAB/Simulink代码示例,便于读者理解和实践。同时,作者分享了许多个人经验和调试技巧,有助于解决常见问题,提升仿真的成功率。

    3dmax插件021-一键路牙.ms

    3dmax插件

    基于一阶RC模型与FFRLS+EKF算法的电池SOC在线联合估计Matlab实现

    内容概要:本文详细介绍了利用一阶RC模型结合带遗忘因子的递推最小二乘(FFRLS)和扩展卡尔曼滤波(EKF)算法,在Matlab中实现电池SOC(荷电状态)的在线联合估计。首先,FFRLS用于实时更新电池模型参数(如R0、R1、C1),以适应电池老化和时变特性。接着,EKF用于精确估计SOC,通过OCV-SOC曲线和状态方程进行预测和更新。文中还讨论了参数初始化、采样周期设置、温度补偿以及常见错误避免等问题,并提供了详细的代码片段和调试建议。 适合人群:从事电池管理系统研究与开发的技术人员,尤其是有一定Matlab编程基础的研究人员。 使用场景及目标:适用于电动汽车、储能系统等领域,旨在提高电池SOC估计精度,确保电池安全高效运行。具体目标包括降低SOC估计误差、增强算法鲁棒性和适应不同工况条件。 其他说明:文章强调了参数估计和状态估计之间的相互影响,提出了双线程配合的工作方式。此外,还分享了一些实践经验,如参数初始化、采样周期的选择、温度补偿等,帮助读者更好地理解和应用这一方法。

    关于人工智能大模型的几点思考.pdf

    AI基础大模型 单模态向多模态发展:AI从单一类型的输入(如文本)转向能够处理多种类型的数据(如文本、音频、图像和视频)。 具体应用实例: ChatGPT实现了类似人类的文本交互能力。 Midjourney AIGC画作《太空歌剧院》获得艺术比赛冠军。 阿里云I2VGen-XL模型可以从一张图片生成高清视频。 行业+AI 报告指出AI正在加速多个行业的智能化升级,包括金融、医疗、智能制造、司法、汽车、气象等领域,并列举了具体的案例和成就,例如药物研发周期的显著缩短和工业质检准确率的提升。 数据预处理与模型训练 强调了数据预处理在AI模型训练中的重要性,并指出现有分布式文件系统在可扩展性和低延迟方面面临的挑战。 提出了解决方案,如以数据为中心的执行模式和诸葛弩大数据处理引擎的设计理念,旨在降低数据处理开销和提高效率。 国产算力的发展 报告提到中国AI内循环加速的到来,强调了国家力量在推动智能计算中心建设方面的角色,并设定了国产算力使用占比的目标,如上海到2025年新建智算中心国产算力使用占比超50%。 大规模模型训练技术 描述了“八卦炉”等支撑国产AI算力的基础软件集的发展情况,以及它们如何支持大规模模型训练任务,包括北京智源研究院悟道2.0、阿里巴巴M6大模型等。 总结 报告展示了AI大模型技术的进步如何推动各行业变革,同时提出了面对的技术挑战和解决方案,特别是针对国内算力的发展方向和策略。通过这些进展,可以看出AI不仅改变了传统行业的工作方式,还为科学研究提供了新的工具和方法。

    徐鹏_FinClip:技术与生态双轮驱动的鸿蒙之路.pdf

    Con北京站聚焦技术落地与前沿趋势,核心方向包括: ​​AI工程化​​:端侧推理、RAG增强、多模态生成成为主流; ​​云原生深水区​​:混合云治理、湖仓一体架构、可观测性技术持续迭代; ​​安全与效能​​:大模型安全防御、研发流程标准化、平台工程价值凸显; ​​行业融合​​:物流、金融、社交等领域的技术跨界创新案例丰富。 大会为开发者提供了从理论到实践的全景视角,推动技术向生产力转化。

    《轨道力学导论》8讲教案

    《轨道力学导论》教案,8讲,16课时

    路径规划算法的Matlab实现:遗传算法、蚁群算法、模拟退火及其结合的应用

    内容概要:本文详细介绍了几种常见的路径规划算法(遗传算法、蚁群算法、模拟退火算法)及其结合算法在Matlab中的具体实现方法。首先,遗传算法通过模拟自然界的生物进化过程,利用选择、交叉和变异操作优化路径;蚁群算法借鉴蚂蚁觅食的行为,通过信息素浓度影响路径选择;模拟退火算法则通过物理退火过程的模拟,在解空间中随机搜索并逐渐收敛到较优解。此外,还探讨了遗传算法与模拟退火算法结合的方式,充分发挥两者的优势。每种算法都有详细的代码实现和解释,帮助读者深入理解各个步骤的工作原理。 适合人群:对路径规划算法感兴趣的科研人员、学生以及从事相关领域的工程师。 使用场景及目标:适用于需要进行路径规划的实际应用场景,如机器人导航、物流配送路线优化等。通过学习这些算法的具体实现,可以提高路径规划的效率和准确性。 其他说明:文中不仅提供了完整的代码实现,还分享了许多实用的经验和技巧,如参数调整的方法、常见问题的解决方案等。这对于初学者来说是非常宝贵的参考资料。

Global site tag (gtag.js) - Google Analytics