内容
1.启动程序和启动Activity的流程
2.context的理解
3.页面跳转
4.如何将自己的页面共享出去
一.启动程序和启动Activity的流程

二.context的理解
1.Context提供了访问系统资源的方法,可以理解为一个桥梁,设备和界面就是通过Context来连接的
2.Activity的context和applicationContext区别
大多数情况下可以相互使用,但是在设计界面跳转的时候,尽量使用activity的context(不绝对),因为它提供了任务栈,applicationContext没有提供任务栈
三.页面跳转
1.页面跳转分为显式跳转和隐式跳转
显式跳转一般是同一个程序不同页面之间,明确指定从哪个页面跳转到哪个页面
隐式跳转一般是不同程序之间界面的跳转,比如微信分享,比如打开系统提供的服务(电话,相机等等),因为根本不知道它们是啥类管理的,也不知道界面名字,很难明确指定,而是用action(和data)
2.返回界面的两种方式
①直接使用finish()删除
②也可以在Manifest种指定父activity
3.传递数据的两种方式
传递数据有两种方式,一种是通过intent,一种是bundle
MainActivity中
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
next.setOnClickListener {
//明确指定从当前页面跳转到SecondActivity页面
val intent = Intent(this,SecondActivity::class.java)
/*//传递数据方式①
//只能传递已有的数据类型
intent.putExtra("name","jack")
intent.putExtra("pxd","123")*/
//传递数据方式②
val bundle = Bundle()
bundle.putString("name","jack")
bundle.putInt("pxd",123)
//开始跳转
//startActivity(intent)
//需要返回值的跳转
startActivityForResult(intent,1)
}
}
//如果要回调数据就要用这个方法,这个方法是系统自动调用的
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//1.首先判断是是不是我请求的数据
if(requestCode == 1){
//判断处理结果,因为是不带数据的回调,所以直接判断resultCode
if(resultCode == 1){
Log.v("result","处理成功,${data?.getStringExtra("uid")}")
}else{
Log.v("result","处理失败")
}
}else{
Log.v("result","不是我请求的数据")
}
}
}
secondActivity中
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
/*方式①
val name: String? = intent.getStringExtra("name")
val password: String? = intent.getStringExtra("pxd")
*/
//方式②
val bundle = intent.extras
val name: String? = bundle?.getString("name")
val password: Int? = bundle?.getInt("pxd")
//使用日志输出
Log.v("pxd","$name 的密码是 $password")
back.setOnClickListener{
//回调结果,不带数据
//setResult(0)
//回调结果,有数据的
Intent().apply {
putExtra("uid","001")
setResult(1,this)
}
//删除页面
finish()
}
}
}
就会输出
处理成功,001
四.如何将自己的页面共享出去
①自己在需要共享的页面的Manifest中定义intent-filter
<intent-filter>
<!--系统提供的行为-->
<action android:name="android.intent.action.SEND"/>
<!--自己定义的行为-->
<action android:name="pxd.action.bala"/>
<!--如果希望外部程序能够启动这个页面,必须设置category为default-->
<category android:name="android.intent.category.DEFAULT"/>
<!--如果希望外部启动这个界面的时候传递数据过来,则必须定义数据的格式-->
<!--上面两个是必须的,而这个可以没有-->
<data android:scheme="pxd"/>
</intent-filter>
②到时就外部程序就可以这样调用
button.setOnClickListener {
Intent().apply {
action = Intent.ACTION_SEND
data = Uri.parse("pxd: 传过来的数据")
}.also {
startActivity(it)
}
}
③到时候这样取得传递过来的数据
val content: String? = intent.data?.schemeSpecificPart
本文深入讲解了Android应用开发的关键概念,包括程序启动流程、Context的作用、页面跳转机制及数据传递方式,同时介绍了如何使页面对外共享,是Android开发者入门与进阶的实用指南。


被折叠的 条评论
为什么被折叠?



