Activity(2018.5.3)

关于Intent(意图)

意图可以启动activity,service和broadcast

意图可以携带参数进行跳转

意图分为显式意图和隐式意图

意图可以设置action, category等属性

用来启动其他新的Activity。

作为传递数据和事件的桥梁。


Intent的分类

意图 : 明确指定的目标组件的意图
创建对象 :Intent(Context context ,Class clazz )
何时使用 : 当操作 当前自己应用 的组件时使用
隐式意图 : 没有明确指定目标组件的意图
创建对象 : Intent(String action)
何时使用 : 当操作 其它应用 的组件时使用


————————————————————————————————————————————————————

Activity的生命周期以及调用时机

Oncreate(创建) :创建activity第一个被调用的方法,用来对Activity初始化
Onstart(激活):activity变为在屏幕上对用户可见时调用,显示即调用
Onresume(恢复):activity开始与用户交互时调用(启动,重新启动。本方法都调用)
Onpause(暂停):activity被暂停或收回CPU和其他资源时调用,用于保存活动状态,保护现场,一般用来保存数据或者释放占用的资源。
Onstop(停止):activity被停止并转为不可见阶段时调用
Onrestart(重启):重启时调用。本活动仍在栈中,从停止状态转换为活动状态之前被调用。
Ondestroy(销毁):被完全从系统内存中移除时候调用


简单介绍Activity的生命周期四种状态

答:1、Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
2、Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。
3、Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
4、Killed状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是
Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。
 


————————————————————————————————————————————————————


测试用例:

1.界面从死亡-->运行
                     创建对象-->onCreate()-->onStart() -->onResume()-->可见可操作(运行状态)
 2.界面从   运行-->死亡
        onPause()-->onStart() -->onDestroy()-->Activity对象成为垃圾对象(死亡状态)  
 3.界面从   运行-->停止
   onPause()-->onStart()
 
 4.界面从   停止-->运行
   onRestart()-->onStart()-->onResume()
 5.界面从   运行-->暂停
           onPause()
 6.界面从   暂停-->运行
       onResume()



 match_parent     填充父窗体
   wrap_content      包裹内容

   hint属性: 提示信息

 android:id="@+id/et_main_msg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:hint="@string/tips"



 //初始化视图对象
        et_main_msg=(EditText) findViewById(R.id.et_main_msg);
        btn_main_start1=(Button) findViewById(R.id.btn_main_start1);
        btn_main_start2=(Button) findViewById(R.id.btn_main_start2);
        
        //设置点击监听
        btn_main_start1.setOnClickListener(this);

        btn_main_start2.setOnClickListener(this);

public void onClick(View v){//v 就是发生的事件 (用户操作的)视图对象

if (v==btn_main_start1){

// Toast.makeText(this, "一般启动", Toast.LENGTH_SHORT).show();
//1.创建Intent对象(显示)
Intent intent = new Intent(this,SecondActivity.class);
    //2 通过Intent携带额外数据            trim 去首尾空格
String message = et_main_msg.getText().toString().trim();
intent.putExtra("MSG", message); // map保存

 //3.启动Activity  

startActivity(intent);

}else if(v==btn_main_start2){

// Toast.makeText(this, "带回调启动", Toast.LENGTH_SHORT).show();

//1.创建Intent对象(显示)
Intent intent = new Intent(this,SecondActivity.class);
    //2 通过Intent携带额外数据            trim 去首尾空格
String message = et_main_msg.getText().toString().trim();
intent.putExtra("MSG", message); // map保存
//3.带回调的启动Activity
int requestCode=2;
startActivityForResult(intent, requestCode);

}

}

protected void onActivityResult(int requestCode, int resultCode, Intent data){

 //判断Code                     请求码                        结果码

if (requestCode==2 && resultCode==3 ){

//从data中取出数据

String result = data.getStringExtra("RESULT");

//显示

et_main_msg.setText(result);

}


}

//界面二

public class SecondActivity extends Activity{

private EditText et_second_msg;

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

//4.得到Intent对象

Intent intent = getIntent();

//5.读取数据

String message = intent.getStringExtra("MSG");

//6.显示到EditText中

et_second_msg.setText(message);

}

public void back1(View v){

/关闭当前界面

finish();

}

public void back2(View v){

//保存一个结果

int resultCode =3;

//准备一个携带额外数据的Intent对象

Intent data= new Intent();

String result = et_second_msg.getText().toString().trim();

data.putExtra("RESULT", result);

//设置结果

setResult(resultCode, data);

//关闭当前界面

finish();

}

}


———————————————————————————————————————————————

Servlet的理解


狭义:

Servlet是一个interface,我们的Servlet类都必须是此接口的实现类

广义:

Servlet是一种服务器端的组件, 用来处理 客户端(浏览器)提交的 , 返回 一个响

界面



组件的特点

它的类必须实现特定接口或继承特定类
需要在配置文件中配置其全类名
它的对象不是通过new来创建的,而是系统自动创建
它的对象具有一定的生命周期,它的类中有对应的生命周期回调方法

————————————————————————————————————————————————————

Actvity的定义

Activity,直译为活动, 它是Android定义的四大应用组件之一,也是最重要用得最多的.
Activity用来提供一个能让用户操作并与之交互的界面
一个应用有多个界面, 也就是包含多个Activity
打电话,发短信, 拍照,发邮件等功能都是通过Activity来做的



类比ActivityServlet




————————————————————————————————————————————————————

IntentFilter的理解

在配置Activity, 可以为Activity指定一个IntentFilter的配置

如果你的Activity希望其它应用能访问到, 需要配置<intent-filter>

如果你想启动其它应用的界面你必须用隐式intent,且目标界面Activty配置了<intent-filter>

它的作用类似于web中的为Servlet配置的<url-pattern>



————————————————————————————————————————————————————

相关API


Intent:意图

    Intent(Context packageContext,Class<?> cls) 用于创  建显示意图对象

      Intent(String action):用于创建隐式意图对象

      putExtra(String name, Xxx value):保存额外数据

      Xxx getXxxExtra(String name):获取额外数据

      setData(Uri data):设置有特定格式的uri数据

Activity:活动

      startActivity(Intent intent):一般启动Activity

      startActivityForResult(int reqCode, Intent intent):带回调启动Activity

      onActivityResult(int reqCode, int resultCode, Intent data): 回调方法

      setResult(int resultCode, Intent data):设置要返回的结果

      finish():结束当前Activity

      getIntent():得到启动Activity的意图


Activity生命周期相关方法

         onCreate()

       onStart()

       onResume()

       onPause()

       onRestart()

       onStop()

       onDestory()


View:代表视图的根基类

     setOnClickListener(OnClickListener listener):设置点击监听

     setOnLongClickListener(OnLongListener listener):设置长按监听


SmsManager:发送短信的工具类

     static SmsManager getDefault() :得到当前对象

    sendTextMessage(...):发送短信


设置点击监听的2种方式     
方式一: Activity中添加监听

  view.setOnClickListener(OnClickListenerlistener);

方式二布局添加监听

  layout:  android:onclick=“方法名

  Activity: public void 方法名(Viewv) {   }

设置长按监听
view.setOnLongClickListener(OnLongClickListenerlistener)


编写Activity的基本步骤

1. 定义Activity类的子类SecondActivity

2. AndroidManifest.xml配置定义的组件

3. 定义布局文件activity_second.xml

4. 重写ActivityonCreate(), 加载布局文件



猜你喜欢

转载自blog.csdn.net/g1448261713/article/details/80185879