当从一个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里一切即对象的思维中, 把这个回调函数封装成类了,然后创造其对象的过程也由系统完成了?
另外, 组件有木有一个精确的定义, 组件, 类, 对象的区别有木有精确定义?  有木有啊有木有?

解决方案 »

  1.   

    是因为Activity2.class会自动创建一个对象吗? 那如果这样的话,用户会想传一个对象过去怎么办, 用户在另一外(例如后台线程)想调用Activity2的对象的功能怎么办?ANS:首先,通过startactivity启动一个界面,你可以理解为系统会生成一个activity的对象,然后加载到系统当中,从而显示。如果说想传递对象,android有提供Parcelable类可以用于activity间的对象传递。而你要是想在其他线程调用一个activity里的功能,那应该不是简单的activity.function()这样调用,首先,你不能把它看做一个简单的对象来调用,要遵循android的机制,一般这种情况都是通过handler发消息,或者使用broadcast发送广播消息来实现目标activity的动作,比如刷新啊,之类的。
      

  2.   

    传递消息    
     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");