当前位置: 代码迷 >> Android >> 关于Activity和intent使用的困惑,该怎么处理
  详细解决方案

关于Activity和intent使用的困惑,该怎么处理

热度:57   发布时间:2016-05-01 21:20:09.0
关于Activity和intent使用的困惑

当从一个Activity跳到另一个Activity,代码段如下:
Intent intent = new Intent(); //新建一个Intent对象
intent.setClass(Activity1.this, Activity2.class); //指定intent要启动的类
startActivity(intent); //启动一个新的Activity

其中intent.setClass(Activity1.this, Activity2.class); //指定intent要启动的类
比较困惑:
从参数上看, 是由一个“对象”跳到一个“类”, 而不是一个“对象”跳到另一个“对象”。

是因为Activity2.class会自动创建一个对象吗? 那如果这样的话,用户会想传一个对象过去怎么办, 用户在另一外(例如后台线程)想调用Activity2的对象的功能怎么办?

从表现形式上看, 我是否可以认为所谓的Activity组件, 其实就是windows开发里的回调函数, 没有类和对象之分, 不是由用户来调用的。 只不过在java里一切即对象的思维中, 把这个回调函数封装成类了,然后创造其对象的过程也由系统完成了?


另外, 组件有木有一个精确的定义, 组件, 类, 对象的区别有木有精确定义? 有木有啊有木有?



------解决方案--------------------
是因为Activity2.class会自动创建一个对象吗? 那如果这样的话,用户会想传一个对象过去怎么办, 用户在另一外(例如后台线程)想调用Activity2的对象的功能怎么办?

ANS:首先,通过startactivity启动一个界面,你可以理解为系统会生成一个activity的对象,然后加载到系统当中,从而显示。如果说想传递对象,android有提供Parcelable类可以用于activity间的对象传递。而你要是想在其他线程调用一个activity里的功能,那应该不是简单的activity.function()这样调用,首先,你不能把它看做一个简单的对象来调用,要遵循android的机制,一般这种情况都是通过handler发消息,或者使用broadcast发送广播消息来实现目标activity的动作,比如刷新啊,之类的。
------解决方案--------------------
传递消息
 Intent intent = new Intent();
intent.putExtra ("param_str", "Info from Activity01"); //向另一个Activity传递<name,value>,value采用string的格式,也可以是其他
intent.setClass (Activity01.this, OtherActivity.class ); //指出是哪个Activity,setClass(对象,类),对于嵌套类,为了提供良好的阅读方式并避免奇异,我们都指明是哪个类
Activity01.this.startActivity(intent); //启动另外的Activity,作为View的方法,可以直接使用startActivity,由于嵌套类,这样些可以清晰一些。

接受传递过来的信息

Intent intent = getIntent ();
String value = intent.getStringExtra ("param_str");
  相关解决方案