您的位置:首页 > 移动开发 > Android开发

android之旅12 activity之间的跳转与生命周期

2015-12-27 17:04 513 查看

自定义的第二个Activity

自定义第二个Activity的布局文件sec.xml

<TextView
android:text="第二个Activity"
/>


在manifest中需要配置第二个Activity

<application
.....>
<activitiy
android:name="packageName.XxxActivity"
android:label="@string/app_name" -----快捷图标名称
android:icon="@drawble/ic_launcher" ---快捷图标图片
>
<intent-filter>  -----------显示快捷图标
<action  --定义动作, 隐式跳转使用
android:name="anyname.is.possible"/>
<category --定义附加信息,写死即可
android:name="android.intent.category.DEFAULT"/>
<data
android:scheme="also.anything.is.possible" --定义格式
android:mimeType="text/pwd" -- 定义数据用途的类型
/>
</intent-filter>
<intent-filter> ---- 可以配置多个
.......
</intent-filter>
</activity>
<activity
android:name="xxxx"
....
>
</activity>
</application>


Activity之间的跳转

public class SecondActivity extends Activity{
public void onCreate(){
setContentView(R.layout.sec); //对应sec.xml
Intent intent = getIntent(); //可以由获取数据
}

public void onClick(View v){
Intent intent = new Intent();
//显示跳转,指定类名
intent.setClass(this, SecondActivity.class);
//显示跳转也可以指定包名+类名, 当使用其他人的Activity
intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity");
startActivity(intent);
}

//隐式跳转,不同应用中使用。同一个应用中尽量使用显示,效率更高
public void onClick4(View v){
Intent intent = new Intent();
// ACTION和category,data,type都匹配才能匹配到Activity
// 当有多个应用时候会让用户选择一个
intent.setAction("anyname.is.possible");
//不写也是Default
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(
Uri.parse("also.anything.is.possible:"+"xxoovv")
);
intent.setType("text/pwd");
//如果data和type同时定义必须使用如下方法
intent.setDataAndType(/*参数和上面一样*/);
startActivity(intent);
}
}


生命周期

执行到某个状态则执行onXxx方法,比如onCreate,onStart方法

启动某个Activity时,经历:create–>start–>resume

create时机为Activity创建,start能看到但没焦点(无法交互,比如长按HOME键时出现的状态),resume获得焦点可以交互

返回键Activity被销毁时:pause—>stop–>destroy

pause对应start,能看到无焦点; stop对应create,不可见,此时称为后台Activity;destroy对象销毁

按HOME键执行pause和stop,没有destroy

没有Destroy,会经历restart–>start–>resume

Activity启动第二个Activity: 第一个pause–>第二个(没被销毁时)restart–>第二个start—>第二个resume—>第一个stop

Activity启动第二个Activity: 第一个pause–>第二个(被销毁时)create–>第二个start—>第二个resume—>第一个stop—>第一个destroy(按返回键才会执行)

Activity启动第二个Activity:如果第二个样式透明,则第一个还能看到,那么第二个resume执行完毕后不会执行第一个的stop方法,此时界面回到第一个Activity时候只会执行第一个的resume方法(第二个该怎么执行还是怎么执行的)

Activity失去焦点及以上,如果内存不够都可能被杀死

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: