React Native开发应该了解的Android基本知识

React Native开发应该了解的Android基本知识

最近又开始做React Native项目,个人认为无论采用哪种跨平台的技术,都需要对原生技术有一定的了解,开发的时候才能对项目游刃有余。于是又将遗忘N久的Android基本知识捡起来,记录一下,加深印象,也方便后面查看。

  • Activity

Activity的4种状态:runing -> paused -> stopped -> killed
Activity相当于iOS中的ViewController
用法:
1、创建Activity
2、在AndroidManifext.xml中注册
3、设置布局文件

AndroidManifext.xml作用:
1、描述程序的基本属性
2、描述应用需要使用的权限信息
3、描述包含的应用组件(activity,service,broadcast等)的实现类

Activity的启动方法:
1、显示启动
明确指定要启动的Activity的class或者包名.activity类名
2、隐式启动
设置启动过滤器,通过指定的action或action和data属性,系统会查找符合条件的activity,并启动它

显示启动
// 第一种
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);

// 第二种
Intent intent = new Intent();
// com.example.wangjie.testproject.SecondActivity = 应用包名.activityName
intent.setClassName(MainActivity.this, "com.example.wangjie.testproject.SecondActivity");
startActivity(intent);

// 第三种
Intent intent = new Intent();
intent.setComponent(new ComponentName(MainActivity.this, SecondActivity.class));
startActivity(intent);

// 隐式启动
// 需要在AndroidManifest.xml中配置SecondActivity
<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="action.SecondActivity"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
    </intent-filter>
</activity>
// 第一种
Intent intent = new Intent("action.SecondActivity");
startActivity(intent);

// 第二种
Intent intent = new Intent();
intent.setAction("action.SecondActivity");
startActivity(intent);

Activity的关闭:finish()

Action:代表系统中已经定义的一系列常用的动作
属性的值是一个字符串
通过setAction()方法或者清单文件中设置
当有多个Action匹配隐式启动的条件时,将会弹框选择

Category
指定当前动作Action被执行的环境
通过addCategory()方法或在清单文件中设置

常用值:
android.intent.category.DEFAULT
Android中默认的执行方式,按照普通Activity的执行方式
android.intent.category.LAUNCHER
设置该组件为当前应用启动器,通常配合action.MAIN使用

Activity的生命周期方法
生命周期分析:
Activity启动 -> onCreate() -> onStart() -> onResume()
点击Home键回到主界面(Activity不可见) -> onPause() -> OnStop()
再次回到原Activity时 -> onRestart() -> onStart() -> OnResume()
退出当前Activity时 -> onPause() -> onStop() -> onDestroy()

onCreate
onStart
onResume
onPause
onStop
onDestroy

Activity的启动模式
启动模式:决定生成的Activity是否重用,是否和其他Activity在同一个栈里
standard:默认的启动模式,每次激活Activity都创建Activity实例,放入任务栈
singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity
singleTask:如果需要激活的那个Activity在任务栈中存在实例,则将该Activity放到栈顶,并把该Activity之上的其余Activity出栈
singleInstance:只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有其他Activity存在

配置方法:在AndroidManifext.xml对应Activity节点中添加android:launchMode=“standard”

Activity之间的数据传递
1、通过intent.putExtra()传递数据。在第二个Activity中使用类似getIntent().getStringExtra()的方法获取参数
2、通过Bundle来传递数据,在第二个Activity中使用getIntent().getBundleExtra()的方法获取参数
3、通过实体类实现Serializable接口或者实现Parcelable接口来传递参数

Activity的数据回传
1、通过startActivityForResult()启动Activity
2、在第二个Activity中调用setResult();
3、然后重写onActivityResult(int requestCode, int resultCode, Intent data)方法获取回传的数据

Intent-filter中data匹配的规则
1、如果Intent没有指定Data相关的字段,只能匹配上没有指定Data的IntentFilter
2、如果一个Intent只指定了Uri但是没有Type(并且Type也不能够从Uri中分析出)只能匹配到仅指定了相应Scheme且没有指定Type的IntentFilter
3、如果一个Intent只指定了Type,但是没有指定Uri,它只能匹配到只指定了相应Type且没有指定Scheme的IntentFitler
4、如果一个Intent即有Uri又有Type,那么它会匹配上:
a.Uri和Type都匹配的IntentFilter;
b.首先Type要匹配,另外如果Intent的Uri是content:或file:,且IntentFilter没有指 定Scheme。(因为对于Android来讲content和file这二种Scheme是系统最常见也是用的最多的,所以就当成缺省值来对待)

scheme跳转协议
android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过h5页面跳转页面等。

布局方式
LinearLayout 线性布局
RelativeLayout 相对布局
FrameLayout 帧布局
TableLayout 表格布局

  • 服务Service

服务是Android四大组件之一,和Activity差不多,但是Service只能在后台运行。Service同样需要在AndroidManifext.xml注册才能使用。
Service同样可以通过Intent来启动
1、startService
2、bindService

// Service的生命周期
通过startService启动
onCreate()
onStartCommand()
onDestroy()
// 通过bindService
onBind()
onUnbind()

// 使用
1、自定义Service继承Service或者IntentService
Service不会开启子线程,所有操作都在主线程中,使用的时候需要停止
IntentService必须重写onHandleIntent方法,并且提供一个默认的无参构造函数,任务执行完成后服务自动销毁

startService
1、定义一个类继承Service
2、在Mainfest.xml中配置Service
3、使用Content的startService(Intent)方法启动该Service
4、不在使用时,调用stopService(Intent)方法停止该服务

bindService
1、创建BindService服务端,继承自Service并在类中,创建一个实现IBinder接口的实例对象并提供公共方法给客户端调用
2、从onBind()回调方法返回此Binder实例
3、在客户端中,从onServiceConnected()回调方法接收Binder,并使用提供的方法调用绑定服务

  • Broadcast Receiver

Broadcast是一种广泛应用在应用程序之间传输消息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。
场景:同一app多个进程的不同组件之间的消息传递,不同app组件之间的通讯

种类:
Normal Broadcast: Context.sendBroadcast
System Broadcast: Context.sendOrderedBroadcast
Local Broadcast: 只在自身App内传播

实现广播
1、静态注册: 注册完成就一直运行
2、动态注册: 跟随activity的生命周期

广播机制
1、自定义广播接受者BroadcastReceiver,并覆写onReceive()方法
2、通过Binder机制向AMS(Activity Manager Service)进行注册
3、广播发送者通过Binder机制向AMS发送广播
4、AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver相应的消息循环队列中
5、消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法

  • 应用资源的认识
/res/animator/   存放定义属性动画的XML文件
/res/anim/       存放定义不坚动画的XML文件
/res/color/     存放不同状态颜色列表的XML文件
/res/drawable/  存放各种位图文件,Drawable对象的XML文件
/res/layout     布局文件
/res/menu/      菜单资源
/res/raw/       存放各种原生资源,音视频文件,通过Reaources对象的openRawResources来获取该资源的二进制流,推荐将这些原生资源放到assets目录下,然后使用AssetManager来访问这些资源
/res/values/    存放各种简单的XML文件(colors.xml、dimens.xml、strings.xml、styles.xml等)
/res/xml/        存放任意的XML文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native是一种流行的跨平台移动应用开发框架,它可以让开发者使用React的语法和组件开发iOS和Android应用。以下是关于React Native开发指南的一些要点: 首先,需要掌握JavaScript和React的基础知识,因为React Native使用的是JavaScript语言。理解React的工作原理和基本概念,例如组件、状态和属性,对于React Native开发至关重要。 其次,熟悉React Native的核心组件和API。React Native提供了许多内置的组件和API,例如视图组件、文本组件、按钮组件等。理解这些组件和API的用法和特性,是构建React Native应用的基础。 接着,学习如何使用Flexbox布局来设计和排列React Native应用中的组件。Flexbox是一种用于布局元素的弹性盒模型,可以帮助开发者有效地管理应用界面的布局和风格。 然后,了解如何在React Native中处理用户交互和导航。React Native提供了处理点击事件和手势操作的手段,也提供了导航组件和路由库来实现页面之间的导航和切换。 此外,掌握调试React Native应用的技巧和工具也是非常重要的。React Native提供了一些调试工具,例如React Native Developer Tools和Reactotron,可以帮助开发者追踪和修复应用中的错误和问题。 最后,了解React Native的性能优化技巧和最佳实践也是必要的。因为React Native是使用JavaScript来执行应用逻辑和界面绘制的,所以在处理大数据量和复杂逻辑时需要注意性能方面的优化。 总之,熟悉JavaScript和React基础知识,掌握React Native的核心组件和API,学习flexbox布局和用户交互处理,掌握调试和性能优化技巧,将有助于开发者顺利地使用React Native构建跨平台移动应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值