第一行代码 读后感
Activity相关知识笔记
Activity的基本用法
手动创建Activity的方法
创建和加载布局xml文件
在AndroidMainifest中注册Activity,这一步通常是自动完成的。
主Activity,启动器Activity
在Activity中添加Menu,添加Toast通知
销毁Activity
使用Intent在Activity之间穿梭
显式Intent
val intent = Intent(this, SecondActivity::class.java) startActivity(intent)
隐式Intent
通过在
action和category同时匹配时相应Intent
例
button1.setOnClickListener { val intent = Intent("com.example.activitytest.ACTION_START") intent.addCategory("com.example.activitytest.MY_CATEGORY") startActivity(intent) } <activity android:name=".SecondActivity" > <intent-filter> <action android:name="com.example.activitytest.ACTION_START" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.example.activitytest.MY_CATEGORY"/> </intent-filter> </activity>
隐式Intent更多用法
启动其他应用的Activity,共享功能
同样,自己应用也能相应其他应用的Intent
向下一个Activity传递数据
//In First Activity putExtra("key",data) //In Second Activity val extraData = intent.getStringExtra("key") //如果传递的是整型数据,则使用getIntExtra()方法;如果传递的是布尔型数据,则使用getBooleanExtra()方法,以此类推
返回数据给上一个Activity
//1 startActivityForResult(intent, 1) //2 val intent = Intent() intent.putExtra("data_return", "Hello FirstActivity") setResult(RESULT_OK, intent) //3 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { 1 -> if (resultCode == RESULT_OK) { val returnedData = data?.getStringExtra("data_return") Log.d("FirstActivity", "returned data is $returnedData") } } }
Activity 的生命周期
返回栈
一组存放在栈里的Activity的集合
Activity 状态
运行状态,暂停状态(不在栈顶但是可见),停止状态(不在栈顶不可见),销毁状态。
Activity 生存期
完整生存期(onCreate(),onDestroy()中间)
可见生存期(onStart(),onStop())
前台生存期(onResume(),onPause())
Activity 被回收时的临时数据保存
//保存 override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) val tempData = "Something you just typed" outState.putString("data_key", tempData) } //恢复 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d(tag, "onCreate") setContentView(R.layout.activity_main) if (savedInstanceState != null) { val tempData = savedInstanceState.getString("data_key") Log.d(tag, "tempData is $tempData") } ... }
Activity的启动模式
<activity ... android:launchMode="singleTask" ...> ... </activity>
standard:默认,每次启动入栈
singletop:在栈顶就不重复创建新的实例
singleTask:若存在,就把上面其他Activity全部出栈
singleInstance:启用一个新的返回栈来管理这个Activity
Activity的最佳实践
创建BaseActivity,让其他Activity继承,打印Activity名
新建一个单例类ActivityCollector作为Activity的集合,管理Activity的关闭
在companion object中定义一个actionStart()方法,完成Intent的构建,接收所有需要的数据为参数,存在Intent中,再启动。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2023-04-17 编程打卡:C语言趣味编程习题做