Android初学需要掌握的知识

Android的大纲:
一:Android中有四个最重要的类:Acitvity,Intent,Service,ContentProvider

二:Activity初始化:1.继承android.jar中的Activity类;2.重写onCreate()方法;

三:Activity的生命周期:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop();

四:Intent使用的范围:1.Component Name(各种Activity,Service,Boardcast,短信等组件);2.Action;3.Data;4.Category(不重要);5.Extras;6.Flags(不重要)

五:常用的控件有:TextView;EditText;Button;ImageButton;RadioGroup;RadioButton;CheckBox;Toast;ProgressBar;ListView;Spinner;AutoCompleteTextView;SeekBar;RatingBar;DatePicker;ExpandableListActiity;

六:布局xml有:LinearLayout,TableLayout,RelativeLayout;

七:其他需要注意的技术点:Handler;SQLite;SAX解析XML;BroadCastReceiver;WIFI;Socket编程;AppWidget;Animations;Json;Bluetooth编程;用户定位;googlemap;Sensor(传感器);AsyncTask(异步操作);

八:Android客户端存储数据的三种方法:SharedPreferences;SQLite;ContentProvider

九:Service是什么? 一个应用程序组件,没有图形化界面,用来处理一些耗时比较长的操作.Service不是什么?不是一个单独的进程,不是一个线程; OnCreate(),onStart(),onBind(),onDestroy(),onStartCommand(); Activity.startService();.stopService();


Android细节:
一:控件的一些使用后台类:需要使用到各种Listener;比如OnClickListener;OnCheckedChangeListener;OnSeekBarChangeListener;OnRatingBarChangeListener;等

二:Activity中的回调方法的理解:onSaveInstanceState();onCreateOptionsMenu();onOptoinsItemSelected();onCreateDialog();

三:生成对话框的方法:AlertDialog.Builder(context).setTitle("").setMessage("").setPostiveButton("display",new onClickListener(){}).setNegative("display",new onClickListener(){}).show();  dialog.dismiss();

四:handler的使用:一般用于较长响应时间,比如下载文件等功能;常用方法有,handler.post();handler.postDelayed();handler.removeCallbacks(ThreadName);步骤为:1.首先new handler,2.new Thread();3.需要传输数据的调用handler.obtainMessage()方法生成Message类,使用handler.sendMessage()发送数据;4.使用上边说的常用方法启动或停止handler; 5.需要注意的点:以上方法使用,handler是属于UI主线程,要想分开可以使用Thread.start(); 也可以使用HandlerThread类中的Looper;传输数据可以使用message.sendToTarget(); message中可以放置obj,arg,setData(Bundle)

五:SQLite的使用:通过SQLiteOpenHelper类的getReadableDatabase()或getWriteableDatabase()方法实现其onCreate(),onUpgrade(),onOpen(),close()方法,得到SQLiteDatabase数据库,在通过SQLiteQueryBuilder操作数据库;

六:得到Sdcard的路径:Environment.getExternalStorageDirectory();

七:ContentProvider的使用:可以使用手机中的数据,也可以用其他程序的数据。 每一个ContentProvider对应一个URI,其中有query(),insert(),update(),delete(),getType(),onCreate()方法;
如何实现ContentProvider:1.定义一个Content_URI常量,2.定义一个类继承ContentProvider,3.实现query,insert等方法,4,在AndroidManifest.xml中进行声明;
细节:URI需要用到URIMatcher匹配,this.getContentResolver.notifyChange()通知更新ContentProvider;

八:Sax解析xml:步骤:1.创建事件处理程序;2.创建SAX解析器;3.将事件处理程序分配给解析器;4.对文件解析,将每个事件发送给处理程序;常用的类:SaxParserFactory,SaxParser,SaxReader,ContentHandler,ErrorHandler,DTDHandler,EntityResolver;解析程序:SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();ContentHandler ch = new ContentHandler();xmlReader.setContentHandler(ch);xmlReader.parse(new InputSource(new StringReader(xmlStr)));//后边的String可以换成InputStream

九:BroadcastReceiver的生命周期是一次广播马上结束;在AndroidManifest.xml注册后接收广播的主程序关闭,但是仍然接收;通过Activity或者Service或者AppWidget对象的sendBroadcast();
BroadcastReceiver还可以在components中自动装配卸载,通过registerReceiver() unregisterReceiver();

十:WIFI的状态与操作:状态有:WIFI_STATE_DISABLED,WIFI_STATE_DISABLING,WIFI_STATE_ENABLED,WIFI_STATE_ENABLING,WIFI_STATE_UNKNOWN;操作类:WifiManger .setWifiEnabled() .getWifiState();

十一:常用协议有:TCP/IP,IPX/SPX,UDP,HTTP,RTSP,RTS,MMS;

十二:Socket编程:常用类Socket ServerSocket DatagramSocket 方法有ServerSocket.accept(),ServerSocket.getInputStream();Socket(ipaddress,port),Socket.receive();DatagramSocket.send();

十三:Spinner的使用:1.在layout文件中定义 <spinner /> 2.在String.xml中定义<String-array /> 3.ArrayAdapter.createFromResource();4.spinner.setAdapter(),spinner.setPrompt(), 5.实现onItemSelectedListener();

十四:DatePicker的使用:DatePickerDialog.onDateSetListener();.onDateSet(); context.onCreateDialog(int id);

十五:AutoCompleteTextView的使用:1.layout中设置控件,在设置list_item内容,剩下的和spinner一样;

十六:AppWidget是桌面上的一些快捷小工具,小程序;AppWidgetProviderInfo为widget提供元数据,包括布局,更新频率;(元数据是描述数据的数据,比如说表结构);实现AppWidgetProvider类 实现onDeleted,onDisabled,onEnabled,onReceive,onUpdate方法,通过PendingIntent封装Intent,通过RemoteViews进行操作widget上的控件,通过RemoteView的setClickPendingIntent()方法实现点击功能,最后通过AppwidgetManger.updateAppWidget()更新widget;

十七:Animations提供一系列的动画效果,有两种实现方式,第一类Tweened Animations,包含旋转(Rotate),移动(Translate),缩放(scale),淡入淡出(Alpha)等效果;第二类,Frame-by-Frame animations 创建Drawable序列;步骤:1.创建一个AnimationSet对象,2.根据需要创建相应的Animations;3.设置相应的数据;4.添加进set对象;5.执行set对象; 类有:AnimationUtils.loadAnimation();Interpolator(定义动画的速率);AnimationDrawable,LayoutAnimationController

十八:Json(javascript object notation)是一系列键值对的集合,比xml解析更加方便,Json体积小javascript交互方便,但是对数据的描述性相对差些;JsonReader类中有beginArray,hasNext,beginObject,nextName,nextString,nextInt,endObject,endArray方法;GSon的Api了解

十九:蓝牙常用的类:BluetoothAdapter,BluetoothDevice;adapter.getDefaultAdapter();adapter.isEnable();BluetoothDevice;

二十:用户定位 user location: LocationManager,LocationProviders(GPS,NETWork),LocationListener,Location;manager.requestLocationUpdate();manager.getAllProvider();
Criteria 查找最好的Provider的类;Geocoder查找地方名

二十一:gmap http请求自己找,

二十二:传感器:1.动作传感器(加速度,重力,陀螺仪);2.位置传感器(方向,磁力)3.环境传感器(温度,压力,亮度);主要的类:Sensor = SensorManager.getDefaultSensor(Type);在得到各种属性;

二十三:异步操作:AsyncTask.execute();.doInpackground();.onPreExecute();.onPostExecute();后边的两个方法在UI主线程中,可以操作UI上的控件;第二个方法执行远程的操作,比如网络连接等;

二十四:使用过的权限:android.permission.INTERENT;android.permission.WRITE_EXIERNAL_STORAGE;CHANGE_NETWORK_STATE;CHANGE_WIFI_STATE;ACCESS_NETWORK_STATE;ACCESS_WIFI_STATE;BLUETOOTH;ACCESS_FINE_LOCATION;ACCESS_COARSE_LOCATION;


二十五:如何优化项目:1.避免创建对象,尽量少创建;2.优先使用Virtual而非Interface;例如:Map myMap1 = new HashMap();HashMap myMap2 = new HashMap();后者更好;3.优先选择static而非virtual;4.避免内部的Getter/Setter;5.for循环尽量把对象的length等操作赋值给变量;小心使用增强的For循环语句;6.避免使用Float类型;7.使用子线程handler,异步操作等技术;8.图片cache;9.尽量传输少量数据,尽量少发起请求;等等

猜你喜欢

转载自blog.csdn.net/qq_16116549/article/details/88551245
今日推荐