`
fanfanlovey
  • 浏览: 71789 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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分离的时候,调用这个方法。

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

相关推荐

Global site tag (gtag.js) - Google Analytics