为了账号安全,请及时绑定邮箱和手机立即绑定

Android-深入Activity

难度初级
时长 1小时16分
学习人数
综合评分9.63
47人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.6 逻辑清晰
  • launchMode 属性的singleInstance 与singleTask类似,只是singleInstance定义的activity会重新分配一个栈地址 如图所示,main1,2,3是mainactivity在栈中的排放,启动方式Main1->FirstActivity->Main2->FirstActivity->Main3,,, 返回时,Main3->Main2->Main1->FirstActivity
    查看全部
  • <activity android:name="包名.activity" android:process="包名.activity" //开一个新进程 android:launchMode=" " /><activity> lauchMode=1、standard 未指定时即为standard,在此模式下相同的activity可以重复创建 2、singleTop 当d activity处于栈顶的时候如果再启动d本身不会再创建一个新的activity,而是调用onNewIntent()方法,如果d activity不处于栈顶,被别的activity启动的话仍然会在栈中重新创建。 3、singleTask 任务栈中只能存在一次,第二次启动的话就调用onNewIntent()方法 4、singleInstance
    查看全部
  • adb shell dumpsys activity 查看当前activity, 在打印的log信息中Running activities中查看当前打开的activity
    查看全部
  • 通过在Manifest中为activtiy注册信息时添加:process 即可分配不同的进程名; 使用activity的getTaskId()方法可以获得当前应用程序的taskId,同一个应用程序下的不同activity默认情况下的taskId都是相同的;
    查看全部
  • bundle传递数据大于0.5M会抛出传输数据过大异常; 在传输大量数据的时候也有可能抛出TransactionTooLargeException异常,解决办法是减少bundle传输的数据量
    查看全部
  • 传递一个bitmap对象 Intent intent=new Intent(MainActivity.this,SecondActivity.class); Bundle bundle=new Bundle(); Bitmap bitmap=BitmapFactory.decodeResource(getResource(),R.drawable.ic_launcher); bundle.putParcelable("key",bitmap); intent.putExtra(bundle); startActivity(intent); 接收bitmap Intent intent=getIntent(); Bitmap bitmap=intent.getParcelableExtra("key"); imageView.setImageBitmap(bitmap);
    查看全部
  • 如果传递数据量大的话,可以把数据都放在一个类中 public class Person implements Serializable{ private int age; private String name; private String adress; public Person(int age,String name,String adress){ this.name=name; this.adress=adress; this.age=age; } public String toString(){ //重写toString方法 return "[name="+name+"age+"+age+"adress+"+adress+" ]" } } 传入数据 Intent intent =new Intent(MainActivity.this,SecondActivity.class); Bundle bundle=new Bundle(); Person person=new Person(20,"xiaoming","beijing"); bundle.putSerializable("key",person); intent.putExtras(bundle); startActivity(intent); 接收数据 Intent intent=getIntent(); Person person=(Person)intent.getSerializableExtra("key");
    查看全部
  • 传递数据 传入 Intent intent =new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("key","stringValue"); intent,putExtra("key2",Int); startActivity(intent); 取出 Intent intent =getIntent(); intent.getStringExtra("key"); intent.getIntExtra("key2",0); 通过Bundle传递数据 传入 Intent intent=new Intent(MainActivity.this,SecondActivity.class); Bundle bundle=new Bundle(); bundle.putString("key","stringValue"); bundle.putInt("key2",Int); intent.putExtra(bundle); startActivity(intent); 接收同上
    查看全部
  • Activity之间传递数据 1. 传递普通数据 mIntent.putExtra("name", "Hello, xzhang76"); mIntent.putExtra("age", 27); 2. 传递Bundle类型数据 Bundle bundle = new Bundle(); bundle.putString("name", "xzhang76"); bundle.putInt("age", 27); secIntent.putExtras(bundle); 3. 传递一个对象 要将对象封装在Bundle中 Person me = new Person("xzhang76", 27); Bundle bundle = new Bundle(); bundle.putSerializable("person", me); secIntent.putExtras(bundle); 接收的activity中: Person person = (Person) intent.getSerializableExtra("person"); Person这个类中 public class Person implements Serializable 4. 传递一个Bitmap Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Bundle bundle = new Bundle(); bundle.putParcelable("bitmap", bitmap); secIntent.putExtras(bundle); 接收的activity中 Bitmap bitmap = intent.getParcelableExtra("bitmap"); 5. 注意Bundle对象作为载体传递数据时,数据量很小(<0.5M),否则有如下异常抛出: !!! FAILED BINDER TRANSACTION !!! 也就是说,在Activity之间传递数据时一定要注意数据不能过大。
    查看全部
  • adb shell dumpsys activity
    查看全部
  • Activity的Task和启动模式
    查看全部
  • FirstActivity: singInstance,MainActivity: standard 启动时:AMainActivity(id:20)_FristActivity(id:30)_BMainActivity(id:20)_FristActivity(id:30,复用newIntent)_CMainActivity(id:20) back时:CMainActivity(id:20)_BMainActivity(id:20)_AMainActivity(id:20)_FristActivity(id:30) 总结:单任务栈可复用,back不可跨任务栈
    查看全部
  • 1. 使用intent传递普通参数————》putExtra 2. 使用bundle(map封装)传普参 3. 使用bundle传实现serializable接口的bean实例,用bundle.putserial……获取getSerializable 4. 使用bundle传递bitmap,可以用bundle.putParcelable……获取getParcelable
    查看全部
  • task(任务)就是activities的序列集合 back stack(后台任务栈)对activities进行一系列的管理、打开、关闭
    查看全部
  • bundle传递数据大于0.5M会抛出传输数据过大异常; 在传输大量数据的时候也有可能抛出TransactionTooLargeException异常,解决办法是减少bundle传输的数据量
    查看全部

举报

0/150
提交
取消
课程须知
需要学完<<Android-重识Activity>>
老师告诉你能学到什么?
Activity的Task和Back Stack Activity启动模式 Activity之间的数据交换 Activity之间传递大数据的问题

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!