《第一行代码》第一章、第二章笔记

Android系统的四大组件:活动、服务、广播接收器、内容提供器。

在AndroidManifest.xml中注册活动:

<activity android:name=".HelloWorldActivity">
   <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
 </activity>

日志类型

对应级别

内容

Log.v()

Verbose

最为琐碎、意义最小的日志

Log.d()

Debug

一些调试信息

Log.i()

Info

比较重要的数据

Log.w()

Warm

警告

Log.e()

Error

错误信息


Toast的使用实例:

Button button1=(Button) findViewById(R.id.XX);
button1.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
      Toast.makeText(this,"you clicked",Toast.LENGTH_SHORT).show();
    }
});

1, 获得button实例
2, 为button创建监听器
3, 在监听器中使用Toast方法


引申:自定义Toast布局的实例

LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.XX,(ViewGroup)findViewById(R.id.XX));
Toast toast=new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();


Menu的使用实例:
1, 首先在res文件夹下创建menu类型的文件夹并创建一个新的xml布局文件,在布局文件中加入若干个item控件
2, 在Mainactivity中重载onCreateOptionsMenu()方法,获得新布局文件的实例。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main,menu);
    return true;
}

显式Intent的使用实例:
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
有明确的上下文和目标活动,“意图”明显
 
隐式Intent的使用实例:
帮助理解(Mainactivity.xml文件中):
<activity android:name=".SecondActivity2">
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START"/>
        <action android:name="android.itent.category.DEFAULT"/>
    </intent-filter>
</activity>

Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);

这里使用了默认的category,还可增加多个category,实例如下:

Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.acitivitytest.MY_CATEGORY");
startActivity(intent);

帮助理解(Mainactivity.xml文件中):
<activity android:name=".SecondActivity2">
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START"/>
        <action android:name="android.itent.category.DEFAULT"/>
        <action android:name="com.example.acitivitytest.MY_CATEGORY"/>
    </intent-filter>
</activity>

更多的隐式intent 的用法:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.setData(Uri.parse("http://www.baidu.com"))//跳转到一个网址
intent.setData(Uri.parse("tel:10086"))//跳转到系统拨号界面
startActivity(intent);



活动中的数据传递:
1, 向下一个活动传递数据
在FirstActivity中:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
String data="from MainActivity";
intent.putExtra("extra_data",data);
SecondActivity中:
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity2",data);



2, 返回数据给上一个活动
上一个活动使用了startActivityForResult()方法,有两个参数,第一个参数是Intent,第二个参数是请求码。当前活动使用了setResult()方法,有两个参数,第一个参数用于向上一个活动返回处理结果,有两种选择:RESULT_OK、RESULT_CANCELED,第一个参数则把有数据的Intent传出去,最后用finish()销毁当前活动。
FirstActivity中:
Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivityForResult(intent,1);
SecondActivity中:
Intent intent=new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();

活动的生命周期:


活动的启动模式:

启动模式
描述
standard
每当启动一个新的活动,它就会在返回栈中入栈,且处于栈顶的位置,无论这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例
singleTop
当活动为处于栈顶位置时,会创建新的实例。如果已经在返回栈的栈顶,则不再创建新的实例,而是直接使用它
singleTask
启动该活动是会检查返回栈中是否存在该活动的实例,如果有则直接使用,并把该活动之上的所有活动统统出栈,没有则创建一个新活动实例
singleInstance
指定一个新的返回栈来管理这个活动*

*个人认为这个描述不够准确




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值