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

Android-深入Activity

难度初级
时长 1小时16分
学习人数
综合评分9.63
47人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.6 逻辑清晰
  • Task和BackStack概念 1. 启动一个app,framework都会为这个app分配一个Task,有对应的TaskID和stack,然后在这个APP中所有的activity都共用一个TaskID和stack。 2. 当从一个app的进程跳转到另一个app进程时,还是在同一个task中,这就是Task允许跨进程间调用。 通过在manifest中声明activity "android:process=XXX"可以指定这个activity为另一个进程 3. Back Stack 一个Task就是一系列的activity的集合,这些activity以打开的顺序放入一个stack中,最后打开的activity最先出来。对于一个app来说,main activity就在栈顶的位置。 在一个app中可能会调用其他app的activity,但即使两个activity不在同一个APP中,但是其TaskID是同一个,属于同一个Task Stack file:///D:/software/Eclipse/adt-bundle-windows-x86-20140702/adt-bundle-windows-x86-20140702/sdk/android_sdk_docs_offline_20/docs/guide/components/tasks-and-back-stack.html 4. android中的多任务 假设启动了APP1,对应创建了一个Task A,它有三个activity。然后回到home screen,启动APP2,对应创建了一个Task B。此时,Task A的activity虽然全部stop了,但是Task A的stack还是完整存在的。然后可以通过回到home screen或点击recent apps启动Task A,它的activity回到前台。 5. dumpsys activity (1)running activities部分可以查看当前正在运行的activity (2)mFocusedActivity可以查看正在获取焦点的activity (3)Recent tasks可以查看最近的一些任务
    查看全部
  • 学习笔记 http://blog.csdn.net/ilyluo/article/details/51106642
    查看全部
  • 通过在DOS控制台中输入adb shell dumpsys activity命令查看activity的运行情况: Running activities下就是当前活动的Activity Recent tasks下是模拟器上曾经运行过的程序,显示为程序程序包的名称
    查看全部
  • 安卓系统
    查看全部
  • 《Activity的启动模式》

    • Manifest中给<activity>添加 android:launchMode属性。

    • standard(标准模式),默认新建。

    • singleTop(栈顶单例),如果栈顶单例Activity处于栈顶,那么在此时任意新建该Activity的操作,都会重载onNewIntent(),但不会新建;若该Activity不处于栈顶,则新建

    • singleTask(栈内单例),如果全栈单例Activity处于栈顶,那么在此时任意新建该Activity的操作,都会重载onNewIntent(),但不会新建;若该Activity不处于栈顶,则重载该Activity的onNewIntent(),同时对该Activity上面的其他Activity进行执行onDestroy()销毁

    • singleInstance(外栈单例),如果外栈单例Activity不存在,那么,该Activity会新建在另外单独的任务栈中,此时新建的其他launchMode的Activities会在原来的主任务栈中以该有的方式处理;如果已经存在该Activity,那么程序会查找该Activity,然后重载其onNewIntent()

    查看全部
  • onNewIntent方法就是当activity已经存在时,不再需要创建新的Activity是执行的一个方法
    查看全部
  • 传递Bitmap对象<br> Intent intent = new Intent(---,---);<br> Bundle bundle = new Bundle();<br> Bitmap bitmap = BitampFactory.decodeResource(getResoruces(),R.drawable.ic_launch);<br> bundler.putParcelable("bitmap",btimap);<br> intent.putExtras(bundle);<br> startActivity(intent);<br> 接收数据 Intent intent=getIntent(); if(intent!=null){ Bitmap bitmap=intent.getParcelableExtra("bitmap"); imageView.setImageBitmap(bitmap); }
    查看全部
  • ===========对于稍微多一点的数据进行封装================ >>1:写一个Person类并实现接口Serializable()序列化类 private int age; private String name; private String address; public Person(int age, String name, String address){ this.age = age; this.address = address; this.name = name; } public String toString() { return "[name = "+name +"aget = "+age+ "address = "+address+"]"; } >>2:ThreeActivity--> onCreate put Intent intent = new Intent(ThreeActivity.this, FourActivity.class); Person person = new Person(1, "ailer", "plws"); Bundle bundle = new Bundle(); bundle.putSerializable("person", person); intent.putExtras(bundle); startActivity(intent); >>3:In FourActivity-->onCreate put private TextView textView; textView = (TextView)findViewById(R.id.textView); Intent intent = getIntent(); if(intent !=0 ) { Person person = (Person)inten.getSerializableExtra("person"); textView.setText(person.toString()); }
    查看全部
  • 在配置文件中给Activity设置process属性,可以使其打开在另一个进程中,虽然进程不同,但是在同一个Task(任务栈)中 getTaskId()得到本Activity所在任务(栈)的id
    查看全部
  • 如果传递数据量大的话,可以把数据都放在一个类中 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");
    查看全部
  • adb shell dumpsys activity
    查看全部
  • task(任务)就是activities的序列集合 back stack(后台任务栈)对activities进行一系列的管理、打开、关闭
    查看全部
  • android:launchMode 1.standard 未指定模式即为标准模式,在此模式下可以重复启动同一个activity; 2.singleTop 只有在某activity为栈顶activity,在重复启动时会调用onNewIntent()方法,不被重新创建; 3.singleTask 在启动时系统会搜索任务栈中是否包含该activity,如果包含则调用onNewIntent()方法并将其之上栈中其他的activity全部destroy掉
    查看全部
  • 1.直接使用Intent进行传递 2.使用bundle进行传递 3.可以传递一个对象 4.传递一个图片
    查看全部
  • back stack中的activity是可以不同进程的。
    查看全部
首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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