Android入门学习六:活动、碎片、意图

理解活动
活动就是一个包含应用程序的用户界面的窗口

Activity四种状态

Active/Runing
一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 [img][/img]
Paused
当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
Stoped
当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped 状态。
Killed Activity
被系统杀死回收或者没有被启动时处于 Killed 状态。

Activity生命周期流程图


Activity生命周期这种方法

方法 描述 下一个操作
onCreate() 活动初始化创建时候调用 onStart()
onStart() 活动对用户可见时调用 onResume()或onStop()
onRestart() 活动重新启动(从后台返回前台)时候调用 onStart()
onResume() 活动跟用户交互之前调用 onPause()
onPause() 在系统要激活另一个活动时调用 onResume() 或者 onStop()
onStop() 活动在不可见的情况下调用 onRestart() 或者 onDestroy()
onDestory() 活动被销毁时候调用


Activity的运作流程
当用户按下back按钮时,一个活动就被销毁。onPause()事件在两个情况下都将被调用——当活动被送人后台以及用户按下back键盘而终止活动时。

  • 一般启动Activity:onCreate -> onStart -> onResume
  • 呼叫另一个Activity: onPause -> onCreate -> onStart -> onResume -> onStop
  • 还原Activity: onPause -> onRestart -> onStart -> onResume -> onStop -> onDestroy
  • 退出Activity: onPause -> onStop -> onDestroy
  • 回收再启动Activity: onCreate -> onStart -> onResume


使用意图链接活动
Android中的活动之间的导航是通过意图来完成的

在AndroidMainfest.xml文件中,专门添加了以下内容
<activity
            android:label ="Second Activity"
            android:name =".SencondActivity">
            <intent-filter>
                 <action android:name ="com.dawei.test. SencondActivity">
                 <category android:name ="android.intent.category.DEFAULT">
            </intent-filter>
</activity>

添加的新活动的名称是SecondActivity
新活动的标签为Second Activity
新活动意图名称为com.dawei.test. SencondActivity
意图筛选器的类别是android.intent.category.DEFAULT


在代码中可以通过下面方式调用
startActivity(new Intent("com.dawei.test. SencondActivity"));
//也可以这样写
startActivity(new Intent(this, SencondActivity.class));


如果需要从一个活动中回传数据,应该使用startActivityForResult()
//意图调用
startActivityForResult(new Intent(com.dawei.test, SencondActivity),recode_code)

//回调方法
public void onActivityResult(int requestCode,int resultCode,Intent data){
...
}


使用意图对象传递数据
Intent i = new  Intent("net.learn2develop.SecondActivity");
//---use putExtra() to add new key/value pairs---            
i.putExtra("str1", "This is a string");
i.putExtra("age1", 25);
//---use a Bundle object to add new key/values 
// pairs---  
Bundle extras = new Bundle();
extras.putString("str2", "This is another string");
extras.putInt("age2", 35);                

//---attach the Bundle object to the Intent object---
i.putExtras(extras);                
//---start the activity to get a result back---
startActivityForResult(i, 1);



碎片
可以把碎片看做另一种形式的活动,碎片总是内嵌在活动中的
碎片的生命周期
  • 碎片被创建时:onAttach()-->onCreate()-->onCreateView()-->onActivityCreated();
  • 碎片变为可见时:onStart()-->onResume();
  • 碎片进入后台模式时:onPause()-->onStop();
  • 碎片被销毁时:onPause()-->onStop()-->onDestroyView()-->onDestroy()-->onDetach();


就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate()
onCreateView()
onActivityCreated()

fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached() —— 当fragment和activity关联之后,调用这个方法。
onCreateView() —— 创建fragment中的视图的时候,调用这个方法。
onActivityCreated() —— 当activity的onCreate()方法被返回之后,调用这个方法。
onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
onDetach() —— 当fragment和activity分离的时候,调用这个方法。

使用意图调用内置应用程序
可以通过意图来调用内置的程序,如电话,信息,邮件等应用

猜你喜欢

转载自fanfanlovey.iteye.com/blog/2186133
今日推荐