第一章

1.Android系统架构:(四层)

Linux内核层:为安卓设备的各种硬件提供底层的驱动。

系统运行库层:为Android系统提供主要的特性支持。

应用框架层:提供了构建应用程序可能用到的各种API。

应用层:所有安装在手机上的应用程序都属于这一层。

2.Android系统四大组件:活动(activity)提供活动界面 服务(service)提供多线程或后台运行支持 广播接收器(broadcast receiver)提供系统与程序或程序与程序的通信机制 内容提供器(content provider)提供程序间共享数据的机制

3.开发环境需要的工具:JDK(Java语言的软件开发工具包)Android SDK(谷歌提供的Android开发工具包)Android studio(Android项目IDE开发工具)

4.安卓模拟器是模拟Android手机环境,用于Android app开发

注:app:项目中所有资源代码在此。

***5.使用Android的日志工具Log:

Button button = (Button) findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "Hello", Toast.LENGTH_SHORT).show();

}

});
Log.d("MainActivity","onCreate execute");

}

(在onCreate()方法中)

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.hello_world_layout);

Log.d("HelloWorldActivity","onCreate execute");

}

注:Log.v()用于打印意义最小的,琐碎的日志信息。Log.d()用于打印一些调试信息。Log.i()用于打印一些警告信息。Log.e()用于打印程序中的错误信息。

5.手动创建活动步骤:close project再新建一个Android项目,可命名为ActivityTest,包名使用默认的。再选择Add No Activity手动创建活动finish。项目成功创建后,手动改为project模式,点击Java文件夹下com.example.activitytest包右键新建activity到empty activity,弹出对话框,命名,不要勾选generate layout和launcher activity这两个选项。勾选backwards compatibility,点击finish完成创建。

6.创建和加载布局:右击app/src/main/res目录new一个Directory,命名为layout,在对着layout目录右键new一个layout resource file,在新窗口将布局文件命名为first——layout,根目录默认,点击ok完成创建。接下来在活动中加载这个布局,重新回到FirstActivity,在onCreate()方法中加入:

public class FirstActivity extends AppCompatActivity{

protected void onCreate((Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

}

}

7.在AndroidManifest文件中注册活动:(修改后的AndroidManifest.xml文件)



<application

...>



//





//

***8.在活动中使用Toast(在onCreate()方法中)

添加如下方法:

protect void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

Button button1=(Button)findViewById(R.id.button_1);

button1.setOnClickLIstener(new View.onClickListener(){

@Override

public void onClick(View v){

Toast.makeText(FirstActivity.this,"You clicked Button1",

Toast.LENGTH_SHORT).show();

}

})

}

***9.使用显式Intent:

修改FirstActivity中按钮的点击事件,代码如下所示:

button.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v){

Intent intent =new Intent(FirstActivity.this,SecondActivity.class);

startActivity(intent);

}

});

***10.向下一个活动传递数据:

imageView.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v){

            Intent intent = new Intent(MainActivity.this,DetailActivity.class);
intent.putExtra("title",news0.title);
intent.putExtra("content",news0.content);
intent.putExtra("Source",news0.Source);
intent.putExtra("Time",news0.Time);
startActivityForResult(intent,2);
}
});

比如说FirstActivity中有个字符串,现在想把这个字符串传递到Second-Activity中,则:

button1.setOnClickListener(new View.OnClickListener(){

@override

public void onClick(View v){

string data ="Hello SecondActivity";

Intent intent =new Intent(FirstActivity.this,SecondActivity.class);

intent.putExtra("extra_data",data);

startActivity(intent);

}

});

在把SecondActivity中传输的数据取出,并打印出来,代码如下:

public class SecondActivity extends AppCompatActivity{

@override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R,layout.second_layout);

Intent intent = getIntent();

String data=intent.getStringExtra("extra_data");

log.d("SecondActivity",data);}

}

***11.返回数据给上一个活动

修改firstactivity中按钮的点击事件

button1.setOnClickListener(new View.OnClickLIstener(){

@override

public void onClick(View v){

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

startActivityForResult(intent,1);

}

});

在secondactivity中给按钮注册点击事件,并添加返回数据的逻辑

public class SecondActivity extends AppConpatActivity{

@override

protected void onCreate(Bundle saveInstanceState){

super.onCreate(saveInstanceState);

setContentView(R.layout.second_layout);

Button button2 =(Button) findViewByid(R.id.button_2);

button2.setOnClickListener(new View,onClickListener(){

@override

public void onClick(View v){

Intent intent = new Intent();

Intent.putExtra("data_return","Hello FirstActivity");

setResult(RESULT_OK,intent);

finish();

}

});

}

}

我们还需要在FirstActivity中重写这个方法来得到返回的数据

@override

protected void onActivityResult(int requestCode,int resultCode,Intent data){

Switch (requestCode){

case 1:

if(resultCode == RESULT_OK){

string returnedData = data.getStringExtra("data_return");

Log.d("FirstActivity",returnedData);

}

break;

default;

}

}

在secondactivity中重写onBackPressed()方法

@override

public void onBackPressed(){

Intent intent = new Intent();

intent.putExtra("data_return","Hello FirstActivity");

setResult(RESULT_OK,intent);

finish();

}

12.活动的生命周期:活动(栈顶)-暂停-停止-销毁 完整生存期-可见生存期-前台生存期

13.碎片的创建:

在layout目录上右键选择new-fragment-fragment(blank)

14.动态添加碎片(重点)

Public class detailFragment extends Fragment{

@Override

Public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle saveInstanceState){

View view = inflater.inflate(R.layout.detail_fragment,container,false);

return view;

}

}

15.广播机制:1标准广播完全异步执行的广播,发出后所有广播接收器同时接收到广播消息。

2有序广播:是同步执行的广播,发出后优先级高的收到,逻辑执行完毕后才会继续传播。

16.发送自定义广播(标准,有序)以及接受(重点)

MainActivity的代码

public class MainActivity extends AppC ompatActivity (

@0verride

protected void onCreate (Bundle savedInst anceState) (

sup er. onCreate (savedInstanceState);

setContentVi ew (R. layout. activity_ .main);

Button btnSend= (Button) findViewById(R. id. btnSend);btnSend. setOnCli ckListener ((v) + [

Intent intent=new Intent ();

intent. setAction(" com. example. myapplication. broadcast");intent. putExtra(" extr aKey", "CustomValue"); .sendBroadcast (intent):[

));

))

继承BroadcastReceiver,实现其onReceive方法 接收第一个APP发出的广播并在后台日志输出

public class MyReceiver extends BroadcastReceiver (

private static final String TAG = "MyReceiver";public MyReceiver () [

@0verride

public void onReceive (Context context, Intent intent) {

if (intent. getAction()). equals(" com. example. myapplication. broadcast")){

String extraKey=intent. getStringExtra(" extraKey");

Ioast. makeText (context, "接受到的自定义广播数据为: "+extraKey, Toast. LEIGTH_ SH0RT). show O;

Log. d(TAG, "接受到另一个app的自定义广播数据为:"+extraKey);

}}}

AndroidMainfest.xml添加如下代码

静态广播接收器声明权限





静态注册

17.SQLite数据库存储——创建数据库,添加数据(关键)

新建一个NewsDB类,在类里面设计数据库:

public class NewsDB extends SQLiteOpenHelper{

@Override

Public void onCreate(SQLiteDatabase db){

String sql =”ccreate table NewsTable(“

+”nID integer primary key autoincrement,”

+”Title text,”

+”Content text,”

+”Source text,”

+”Time text”)”;

db.execSQL(sql);

}

插入数据

Public void initData(){

Cursor cursor=queryBySQL(“select count(*)num from NewsTable”);

If(cursor!=null&&cursor.moveToFirst()){

If(cursor.getInt(cursor.getColumnIndex(“num”))==0){

SQLiteDatabass db =getWritableDatabase();

db.execSQL(“insert into NewsTable(Title,Content,Source,Time)values(‘xxx’,’x’,’x’,’x’)”);

}

}

Cursor.close();

}

18.ContentResolver的用法接受系统数据(重点)

private void readContacts(){

Cursor cursor=null;

cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

null,null,null,null

);

if(cursor!=null){

while (cursor.moveToNext()){

//获取联系人姓名

String name= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

//获取联系人电话

String number= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

contactsList.add(name+"\n"+number);

}

adapter.notifyDataSetChanged();

}

}

19.URI统一资源标识符,用于标识某一外部资源名称的字符串 。

20.线程间通讯,声明,调用(重点)异步机制

//开始按钮

btnStrat.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

value=Integer.valueOf(editText.getText().toString());

thread=new Thread(new Runnable() {

@Override

public void run() {

while (value>=0 &&!isPause){

value--;

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

handler.sendEmptyMessage(value);

}

}

});

thread.start();

isPause=false;

}

});

Android复习的更多相关文章

  1. Android复习资料

    转载:http://blog.csdn.net/huachao1001/article/details/53156582 在10月份开始就没有再参与校招了,面试过程真的很累,有时现场等面试一等就是几个 ...

  2. android复习第一天-----简单的android常识

    前言:要去面试了,这些天花一些事件把android中简单的知识点来串联的复习一下 1,android中的工程结构 src文件夹:存储android文件的源代码 gen文件夹:有工具自动生成,不要去修改 ...

  3. Android复习笔记--架构与版本

    #Android架构: 1. Linux 内核层 Android 系统是基于Linux 2.6 内核的,这一层为Android 设备的各种硬件提供了底 层的驱动,如显示驱动.音频驱动.照相机驱动.蓝牙 ...

  4. Android复习笔记--Intent

    Intent是Android中各组件跳转的重要方式,一般可悲用于启动活动.启动服务.以及发送广播等场景. #显示Intent 主要主要用于启动已知的组件 //发送方  Intent intent = ...

  5. Android复习笔记--Activity

    #Activity注册 Android四大组件(Activity,Service,Broadcast Receiver, Content Provider)都需要在AndroidManifest中注册 ...

  6. Android复习指南

    基础无外乎几部分:语言(C/C++或java),操作系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域.这里面其实有很多东西,各大面试宝典都有列举. 在这只列举了Android客户端所需要的和我 ...

  7. android复习第二天------布局

    1,在4,0版本前一共有五种布局,且都是ViewGroup的子类分别是 RelativeLayout(相对),AbsoluteLayout(绝对),LinearLayout(线性),FrameLayo ...

  8. 【Android 复习】:第02期:引导界面(二)使用ViewPager实现欢迎引导页面

    一.实现的效果图 也许是养成了这样一个习惯,每次看别人的代码前,必须要先看实现的效果图达到了一个什么样的效果,是不是跟自己想要实现的效果类似,有图才有真相嘛,呵呵.           二.编码前的准 ...

  9. 【Android 复习】:第01期:引导界面(一)ViewPager介绍和使用详解

    一.ViewPager实现的效果图 二.ViewPager实现的功能 看到上面的效果图,想必大家已经猜出了这个类是干吗用的了,ViewPager类提供了多界面切换的新效果, 新效果有如下特征: < ...

  10. 【Android 复习】:Android之ViewFlipper(二)

    通过手势移动屏幕 上面是通过屏幕上的按钮来在屏幕间切换的,这看起来多少有点不符合Android的风格,如果要是能通过手势的左右滑动来实现屏幕的切换就比较优雅了. 通过android.view.Gest ...

随机推荐

  1. linux -- ubuntu 何为软件源

    新手学Ubuntu的时候,一般不知道什么是源,但源又是Ubuntu下常用到的东西.因此,本文就详细介绍一下Ubuntu 源. 什么是软件源? 源,在Ubuntu下,它相当于软件库,需要什么软件,只要记 ...

  2. 记js的一个奇葩问题!!!!!!!!!!!!

    <a id='gc-yl' onclick='Preview('" + imgPath + "')' style='margin-left:5px;' >预览</ ...

  3. 五大移动GPU厂商

    <谁能笑傲江湖?移动处理器门派那些事儿>一文中我们把2012年的移动处理器的厂商做了一番介绍,并依照各自的属性给划分了门派.既然把他们称为江湖门派.那么每一个门派总要有自己的绝活.移动处理 ...

  4. Solr with Apache Tomcat

    配置教程 1 http://www.duntuk.com/how-install-apache-solr-46-apache-tomcat-7-use-drupal https://www.gotos ...

  5. andriod sdk 安卓模拟器修改imei码,位置信息

      imei码就是手机卡的信息一段15位数字,就好像pc的mac地址.很多app注册会检测你是否是手机登录的,就会读取你的imei码,如果读取不到,就说明你可能是用平板等移动设备上网的. app也可以 ...

  6. ADO连接数据库【msado15.dll】

    Microsoft ActiveX Data Objects (ADO) 注册表查看ADO版本:HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess下有Ve ...

  7. 从css样式表中抽取元素尺寸

    jS从样式表取值的函数.IE中以currentStyle,firefox中defaultView来获取 DOM.style仅仅能读到写在html中的样式值 获取样式值的函数 function retu ...

  8. object - c 语言基础 进阶笔记 随笔笔记

    重点知识Engadget(瘾科技)StackOverFlow(栈溢出)Code4Apprespon魏先宇的程序人生第一周快捷键: Alt+上方向键 跳到最上面  Alt+下方向键 跳到最下面      ...

  9. 【RF库Collections测试】Dictionary Should Contain Sub Dictionary

    Name:Dictionary Should Contain Sub DictionarySource:Collections <test library>Arguments:[ dict ...

  10. org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map com.hyzn.historicalRecord.dao.ITB_HISTORYLOGDAO.TB_HISTORYLOGResultMap

    用了很久的myBatis,忽然出现这个错误,感觉配置什么的都是正确的,错误如下: org.apache.ibatis.builder.IncompleteElementException: Could ...