Android基础

来源:互联网 发布:淘宝粉丝红包 编辑:程序博客网 时间:2024/06/06 14:05
1.Intent
  不仅可以指明想要执行的动作,还可以在不同组件之间进行数据传递,
  可用于启动活动、启动服务、发送广播等
 (1)显示Intent
   startActivity(Intent)
 (2)隐示Intent(可用于启动其它程序的活动,使功能共享成为可能)
   ①指定action和category
     Intent intent = new Intent("action");
     intent.addCategory("category");
   ②Intent intent = new Intent(Intent.ACTION_VIEW);
     intent.setData(Uri.parse("http://www.baidu.com"));//p47<data>标签


     Intent intent = new Intent(Intent.ACTION_DIAL);
     intent.setData(Uri.parse("tel:10086"));//指定了协议是tel
     Intent.ACTION_VIEW是系统内置的动作,用于打开系统浏览器
     Intent.ACTION_DIAL打开拨号界面
   (3)向下一个活动传递数据
       intent.putExtra("extra_data",data);//key-value
       获取数据:
           Intent intent = getIntent();
           intent.getStringExtra("extra_data")
    (4)返回数据给上一个活动
         ①活动启动方式 startActivityForResult(intent,1);
         ②步骤①中活动的销毁
           Intent intent = new Intent();
           intent.putExtra("data_return","hello");
           setResult(RESULT_OK,intent);//第一个参数指定RESULT_OK或RESULT_CANCELED
           finish();
         ③获取返回的数据
           由于使用startActivityForResult来启动新的活动,所以活动销毁时会回调活动一 的onActivityResult方法
           switch(requestCode){
            case 1:
                 if(resultCode ==RESULT_OK){
                   String returnedData = data.getStringExtra("data_return");
                 } 
             break;
             default:
             break;
            }
      (5)点击硬件返回时,采用重写onBackPressed方法
           同(4)②
   
    
2.活动
  (1)活动的启动方式分为四种:standard(默认)、singleTop、singleTask、singInstance,通过android:launchMode进行指定
     standard模式:无论返回栈中是否存在该活动,每次启动都会创建一个新的活动
     singleTop模式:如果返回栈的栈顶已经是该活动,则不会创建新的活动
     singleTask模式:保证整个应用程序的上下文只存在一个实例,返回栈中该活动以上的活动全部出栈
     singInstance模式:启用一个新的返回栈来管理该活动,解决APP间共享活动实例的问题(getTaskId()取得返回栈id)
  (2)启动活动的最佳写法
      SecondActivity中添加启动方法
      public static void actionStart(Context context, String param1, String param2){
       Intent intent = new Intent(content, SecondActivity.class);
       intent.putExtra("param1",param1);
       intent.putExtra("param2",param2);
       context.startActivity(intent);
       }
       FirstActivity启动活动
       SecondActivity.actionStart(FirstActivity.this, "param1", "param2");
   (3)活动回收,数据恢复
   活动回收前,必定回调onSaveInstanceState()
   private void onSaveInstanceState(Bundle  outState){
     super.onSaveInstanceState();
     String data = "Hello";
     outState.putString("data_key",data);
   }
   数据恢复在活动的onCreate(Bundle  savedInstanceState)方法
   if(savedInstanceState != null){
      String data =  savedInstanceState.getString("data_key");
       
   }
      
3.服务 继承service IntentService
(异步消息处理机制,继承AsyncTask)


4.广播接收器  (需要在xml文件中注册、注册权限)
  全局广播和本地广播(本地广播无法通过静态注册的方式接收)
  标准广播和有序广播(android:prioority优先级,截断abortBroadCast),可以跨进程通信(sendBroadCast和sendOrderedBroadCast)
  动态注册(代码注册)、静态注册(xml注册)可实现自启动,要在onDestory()方法取消
  继承BroadcastReceiver,并重写onReceive()方法
  (1)监听网络变化
   声明权限<uses-permissiom android:name="android.permission.ACCESS_NETWOK_STATE"/>
  (2)广播的最佳实践-实现强制下线
5.内容提供器(跨程序共享数据的标准方式)需要xml注册
  自定义内容提供器继承ContentProvider
6.文件存储


7.SharedPreferences存储
    get、put+数据类型


8.SQLite数据库
  数据表的创建工作放在SQLiteOpenHelper的继承类里,重写onCreate和OnUpgrade方法
  使用SQL操作数据数 SQLiteDatabase db.execSQL  db.rawQuery
  integer 整型
  real浮点型
  text 文本类型
  blob 二进制类型
  最佳实践-添加事务-升级数据库的最佳写法(没有break)
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
   switch(oldVersion){
      case 1: 
         db.execSQL(CREATE_BOOK);
      DEFAULT:
     }
   }
9.权限


10.UI
   orientation:方向
   gravity:文字的对齐方式
   layout_gravity:控件的对齐方式
   hint:提示
   maxLine:输入内容的最大行
   src:引入图片
   LinearLayout(线性布局):
     layout_weight(P109)允许使用比例


   RelativeLayout(相对布局):
     layout_alignParentLeft 左对齐 (相对于父布局定位)
     以下属性行对于控件定位
            android:layout_toLeftOf
            android:layout_toRightOf
            android:layout_above
            android:layout_below
    FrameLayout 无定位方式
 
    TableLayout 表格布局
       <TableLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:stretchColumns="0">//将第0列进行拉伸,占据屏幕,0是列号 
            <TableRow>
                <Button android:layout_span="2"/>//占据两列的空间
            </TableRow>
       </TableLayout>        


 Activity主题:
   android:theme = "@android:style/Theme.Dialog"
11.控件
   Button、TextView、EditText、ImageView、Progressbar(进度条)P100、
   AlertDialog(对话框P101、P210)、ProgressBar(类似于AlertDialog,但可显示进度条)P103、
   















































0 0
原创粉丝点击