Activity

Activity


创建第二个Activity

  • 在配置清单中配置
  • 有下列代码

    <intent-filter>
                <action android:name ="android.intent.action.Main>"
                <category android:name="android.intent.category.LAUNCHER"
    <intent-filter>
    

Activity跳转

  • 隐式跳转

    清单文件中配置

    <activity 
                android:name="com.itheima.activityIntent.SecondActivity"
    >
        <intent-filter >
            <action android:name="com.itheima.second"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
    

其中的action是自定义的。而Java代码中,需要配置。

    public void click1(View v){
    Intent intent =new Intent();
    intent.setAction(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:15295740527"));

    startActivity(intent);
}

public void click2(View v){
    Intent intent =new Intent();
    intent.setAction("com.itheima.second1");
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.setDataAndType(Uri.parse("heima1:sb"), "text/username");
    startActivity(intent);
}

public void click3(View v){
    Intent intent=new Intent();
    intent.setClass(this, SecondActivity.class);

    startActivity(intent);
}

public void click4(View v){
    Intent intent =new Intent();
    intent.setClassName("com.android.contacts", "com.android.contacts.activites.DialtactsActivity");
    startActivity(intent);
}

public void click4(View v){
    Intent intent =new Intent();
    intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
    startActivity(intent);
}
public void click5(View v){
    Intent intent =new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.baidu.com"));
    startActivity(intent);
}

应用场景

  • 显式意图:启动同一个应用中的Activity
  • 隐式意图:启动不同应用中的Activity
  • 在启动效率上,隐式效率远小于显式效率。
  • 如果有多个Activity与意图设置的Action匹配,则会弹出一个对话框,包含所匹配的所有Activity

Activity携带数据

  • 主Activity:

    new Intent().putExtra(key,value);
    或者:用bundle封装
    Bundle bundle =new Bundle();
    bundle.putString(key1,value1);
    bundle.putString(key2,value2);
    new Intent().putExtras(bundle);
    
    startActivity(intent);
    
  • 跳转Activity

    Intent intent =getIntent();
    
    intent.getStringExtra(key);
    相应的接收bundle
    Bundle bundle=intent.getExtras();
    String s1=bundle.getString(key1);
    String s2=bundle.getString(key2);
    
  • 7大生命周期方法

    oncreate    onstart
    onResume    onpause
    onstop      ondestroy
    onrestart
    
  • 4大启动模式

    • standard标准模式 后进先出
    • singleTop 单顶模式 如果此Activity在栈顶时,则不能再此启动此类Activity 对于需要考虑用户体验时,需要设置,例如浏览器的书签,短信页面。
    • singleTask 单栈模式 如果此Activity存在栈中,再次启动时则返回到该Activity 对于消耗资源很多的Activity,需要设置,例如网页
    • singleInstance 单例模式,创建一个新栈,且只有该Activity。 例如:拨号界面。10个应用启动拨号界面,实际情况只是将该Activity所在的栈移动前台。
  • 内存不足

    • 先杀死后台Activity所在进程,继而杀死暂停状态的Activity。
    • 如果有多个后台进程,采用最近最少使用算法(LRU)

横竖屏切换

  • 横竖屏切换时会销毁重新加载新的布局文件,可以通过写死方向,不允许切换
    android:screenOrientation=”portrait”
    android:screenOrientation=”landscape”

  • 通过下面代码,可以让屏幕允许切换,但不用销毁当前Activity。

    • 配置文件中

      android:screenOrientation="orientation| keyboardHidden |screenSize"
      
    • 或者onCreate方法中
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值