读书人

小弟我曾经的Android应用开发(二)

发布时间: 2012-09-12 09:21:30 作者: rapoo

我曾经的Android应用开发(二)

以前做Android开发的时候没怎么做笔记,也没写博客,有什么需要记的东西都是这个word放一点,那个txt放一点,现在都不知道到哪里找了,不过总归还是找到一两个word,整理了一下,便有了这篇文章,其中有自己的一些领悟,也有从互联网上摘抄的东西。

(一)关于Activity的启动问题:

1、Activity 从创建到进入运行态所触发的事件 onCreate()-->onStart()-->onResume()

2、从运行态到停止态所触发的事件 onPause()--->onStop()

3、从停止态到运行态所触发事件 onRestart()-->onStart()--->onResume()

4、从运行态到暂停态所触发事件 onPause()

5、从暂停态到运行态所触发事件 onResume()

(二)关于Service启动问题

使用intent.startService() 启动Service: Service与Activity没有关系,也没有通信,就算Activity退出了,Service可能还在。

 Intent intent = new Intent("com.android.camera.action.CROP");   intent.setDataAndType(photoUri, "image/*");   intent.putExtra("crop", "true");  // crop=true 有这句才能出来最后的裁剪页面.

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1); intent.putExtra("outputX", 80); intent.putExtra("outputY", 80); intent.putExtra("return-data", true); intent.putExtra("output", Uri.fromFile(tempFile));intent.putExtra("outputFormat", "JPEG");startActivityForResult(intent, requestCode);


(八)关于GPS

只有启用了这个函数LocationManager.requestLocationUpdates(……);GPs才会起作用,这是一个请求更新函数,里面有一个监听器的参数,能够监听到位置的改变。

android的位置提供有两个,gps和network,其中network包括wifi和基站等网络方式,gps每次获取的位置一般都是不同的,network获取的经纬度在一般很少改变,如果从wifi切换到移动网络,则获取的经纬度会发生变化,反之从移动网络切换到wifi,获取的经纬度也会发生变化,但是如果一直在移动网络,或者一直在wifi网络,则获取的经纬度在几次之内是很少会改变的。当然如果从一个wifi热点切换到另一个wifi热点,获取的经纬度肯定会变化。不变化的是在一个wifi热点内的周围移动获取的经纬度是基本不变的。在不同网络切换到时候获取的经纬度可能在一段时间内会变化,但最终会趋于稳定。例如:

我一开始用wifi获取的是23.0984789--113.3162901(wifi),之后关闭wifi,获取的是23.0981123--113.3154123(基站),(中间还有一两个其他的值,也可以没有)最后趋于23.0981189--113.3154709(基站),开启wifi后,得到23.0984123--113.3162123(wifi),(中间还有几个值,也可以没有),最后趋于23.0984789--113.3162901(wifi),注意到最后趋于稳定的值都是一样的。

(九)关于游戏开发

1:被动更新画面的。比如棋类,这种用view就好了。因为画面的更新是依赖于 onTouch 来更新,可以直接使用 invalidate。 因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。

2:surfaceview中确实有 onDraw这个方法,但是你surfaceview不会自己去调用!!!放在线程中不断调用的,一定要注意!! 在继承view中,因为onDraw方法是系统自动调用的,不像在surfaceview这里这样去在run里面自己去不断调用,在view中我们可以抵用 invalidate()/postInvalidate() 这两种方法实现让系统调用onDraw方法,这里也是和surfaceview中的不同之一!

3: 这里canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的。这里稍微解释一下,当我们对画布进行旋转,缩放,平移等操作的时候其实我们是想对特定的元素进行操作,比如图片,一个矩形等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响


(十)其他知识点

1)Android基于http上传文件到服务器端要分析文件的流格式,自己来组装流格式来发送到服务器端。在服务器端通过开源的一个组件commons fileupload来实现文件流的解析。

2)真机和模拟器访问本机都是用10.0.2.2,因为127.0.0.1是模拟器本身的地址。但是如果是真机测试,则服务器的地址就是本机自己的ip地址

3)要想监听电话的来电状态,信号强度等,可以通过TelephonyManager来实现,具体是得到一个电话管理器对象TelephonyManager,然后通过listen()方法设置相应的电话监听器PhoneStateListener来监听电话的各种状态.PhoneStateListener是里面有相应的回调函数,如OnSignaStrengthsChanged()方法是当电话的强度改变时就会调用。
4)要想监听电话的来电状态,信号强度等,可以通过TelephonyManager来实现,具体是得到一个电话管理器对象TelephonyManager,然后通过listen()方法设置相应的电话监听器PhoneStateListener来监听电话的各种状态.PhoneStateListener是里面有相应的回调函数,如OnSignaStrengthsChanged()方法是当电话的强度改变时就会调用。




读书人网 >Android

热点推荐