Android Activity

1.配置启动Activity

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

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

2.在Activity中使用Menu

在res/menu/menu_item.xml下创建菜单项

<item  
     android:id="@+id/menu_item"  
     android:icon="@drawable/setting"  
     android:title="@string/menu_item"/>  
重写onCreateOptionsMenu()方法创建菜单

@Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.menu_item, menu);  
        return true;  
    }  
返回true表示显示菜单。

重写onOptionsItemSelected()方法定义菜单响应事件

@Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
        switch(item.getItemId()){  
           case R.id.menu_item:             
               break;  
           default:  
               break;  
           }    
    }  
3.使用隐式Intent
通过<action>和<category>的信息,让系统去启动合适的Activity。<category>标签中的信息更加具体指定了当前Activity。<data>指定了当前Activity能响应的数据。
 Intent intent = new Intent();  
 intent.setAction("com.android.activity.MY_ACTION");  
 intent.addCategory("com.android.activity.MY_CATEGOTY")
 startActivity(intent);   
使用隐式Intent,不仅可以启动自己程序内的Activity,还可以启动其他程序的Activity。

4.Activity间传递数据
通过putExtra(key,value)存值,通过getXXXExtra取值(key)。

将数据返回给上一个Activity可以复写onActivityResult()方法,其中requestCode值判断数据是从哪个Activity返回的,resultCode判断处理结果是否成功。

5.onSaveInstanceState()

当从ActivityA启动了ActivityB,如果由于内存不足,ActivityA被回收了,当从ActivityB返回到ActivityA,不会执行onRestart()方法,而是会执行ActivityA的onCreate()的方法,因为ActivityA在这种情况下会被重新创建一次。为了保持Activity中的临时数据和状态,可以使用onSaveInstanceState()方法。

onSaveInstance()方法保证在Activity回收之前一定会被调用,使用传入的Bundle对象保存数据,bundle.putXXX(key,value)。在onCreate()方法中从Bundle中取数据。

 @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("data","test");
    }
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if(saveInstanceState != null){
        String data = saveInstanceState.getStri
        ng("data");
         }
    }

6.活动的启动模式

standard: 系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建该Activity的一个新的实例。

singleTop:在启动Activity时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的实例。

singleTask:每次启动该Activtiy,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在直接使用该实例,并把这个Activity之上的所有活动统统出栈,如果没有发现就会创建一个新的实例。

singleInstance:启用一个新的返回栈来管理这个Activity。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值