安卓开发需要哪些知识 安卓开发应该知道的几点

下面是安卓应用开发必须知道的事情,像Java代码怎么写,Java是安卓应用开发中最常使用的工具,下面就针对Java代码。
1. 不要持有Context的静态引用
Java代码
1. publicclassMainActivityextendsLocationManagingActivityimplementsActionBar.OnNavigationListener,
2. GooglePlayServicesClient.ConnectionCallbacks,
3. GooglePlayServicesClient.OnConnectionFailedListener{
4. //...
5. privatestaticMeTrackerStoremMeTrackerStore;
6. //...
7. @Override
8. protectedvoidonCreate{
9. //...
10. mMeTrackerStore=newMeTrackerStore;
11. }
12. }
这对于每个人来说看似是一个不可能犯的错误。但事实却并非如此,我犯了这个错误,我也看到过别人犯这个错误,同时我也采访过那些不能很快指出为什么这是放在第一位的错误的人。不要这样做,它是会变的。
如果MeTrackerStore通过它的构造函数保持一个指向Activity的引用,这个Activity将不会被垃圾回收,除非静态变量被从新分配到不同的Activity。这是因为mMeTrackerStore是静态变量,而静态变量的内存是不会被回收,直到应用程序退出才回收。如果你正在试图做这样的事情,你的代码很有可能有严重的错误。
2. 注意那些你无法控制生命周期的对象的隐式引用
Java代码
1. publicclassDefineGeofenceFragmentextendsFragment{
2. publicclassGetLatAndLongAndUpdateMapCameraAsyncTaskextendsAsyncTask{
3.
4. @Override
5. protectedLatLngdoInBackground{
6. //...
7. try{
8. //Herewemakethehttprequestfortheplacesearchsuggestions
9. httpResponse=httpClient.execute;
10. HttpEntityentity=httpResponse.getEntity;
11. in putStream=entity.getContent;
12. //..
13. }
14. }
15. }
16. }
这段代码有很多问题,但我现在只会把重点问题放在“隐式引用”那些问题上。在Java中,内部类有个对外部类实例有个隐式引用。
在这个例子中,任何GetLatAndLongAndUpdateCameraAsyncTask都有一个外部类DefineGeofenceFragment的引用。对于匿名类是同样的,它们也有一个对包含它们的类的实例的一个隐式引用。
GetLatAndLongAndUpdateCameraAsyncTask对生命周期我们无法控制的Fragment对象有一个隐式引用。Android SDK负责创建和销毁Fragment,如果GetLatAndLongAndUpdateCameraAsyncTask 因为正在运行而不能被垃圾回收,那么DefineGeofenceFragment也将因为具有隐式引用而保留不能被垃圾回收。
如果你想找安卓应用开发服务,或者想要了解更多安卓应用开发资讯,就上网。网入驻上百家专业安卓应用开发公司,汇集全国千万优秀专业人才,提供最全面、最专业的安卓应用开发服务。
