Time of Update: 2018-12-04
Android的虛擬機器是基於寄存器的Dalvik,它的最大堆大小一般是16M。但是Android採用的是Java語言編寫,所在很大程度上,Android的記憶體機制等同於Java的記憶體機制(Java記憶體機制在網上文章很多,大家有興趣瞭解的可以去Google或者百度尋找一些資料)。因此在一些程式員開發的時候,記憶體的限制問題給很多初學開發人員帶來記憶體溢出等嚴重問題。在我們不使用一些記憶體的時候,我們要盡量在Android或者其他平台上避免在運行其他程式時,儲存必要的狀態,使得一些死進程所帶
Time of Update: 2018-12-04
在Dalvik運行時裡邊,程式員不能顯式地分配和釋放記憶體,所以這裡的記憶體泄露跟c和c++裡面的不同。在你的代碼裡邊,記憶體泄露就是你保留了一個並不再需要的類對象的引用。有時候僅僅一個引用就會阻礙gc對一大堆對象的回收。必要的工具: Android SDK提供了2個主要的剖析應用程式記憶體使用量情況的工具:DDMS裡的一個分頁Allocation Tracker和heap dumps。Allocation
Time of Update: 2018-12-04
一、回呼函數回呼函數就是一個通過函數指標調用的函數。如果你把函數的指標(地址)作為參數傳遞給另一個函數,當這個指標被用為調用它所指向的函數時,我們就說這是回呼函數。回呼函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。詳細解釋:客戶程式C調用服務程式S中的某個函數A,然後S又在某個時候反過來調用C中的某個函數B,對於C來說,這個B便叫做回呼函數。例如Win32下的視窗過程函數就是一個典型的回呼函數。一般說來,C不會自己調用B,C提供B的
Time of Update: 2018-12-04
一般在剛開始開發android時,會犯一個錯誤,即在View的建構函式中擷取getWidth()和getHeight(),當一個view對象建立時,android並不知道其大小,所以getWidth()和getHeight()返回的結果是0,真正大小是在計算布局時才會計算,所以會發現一個有趣的事,即在onDraw( ) 卻能取得長寬的原因。 如何在建構函式中如何取得長寬。Java代碼 width = activity.getWindowManager().getDefaultDisplay()
Time of Update: 2018-12-04
應用在初次啟動的時候有黑屏閃過(或者白屏),因為系統預設的theme(主題裡設定了顏色)設定了啟動時的北京顏色。那麼怎麼能改變一下,讓它變的好看點呢?看了很多,發現stackoverflow.com上有很多好東西啊。前一段時間有人說學會了Google,Stackoverflow.com,就不愁寫代碼了。資源太多了。消除activity啟動時的初始白屏或黑屏問題1. style.xml中中增加 <style name="AppTheme" parent="android:Theme.H
Time of Update: 2018-12-04
第一種方法 Java代碼 //得到Resources對象 Resources r = this.getContext().getResources(); //以資料流的方式讀取資源 Inputstream is = r.openRawResource(R.drawable.my_background_image); BitmapDrawable bmpDraw = new BitmapDrawable(is); Bitmap bmp = bmpDraw.getBitmap()
Time of Update: 2018-12-04
在Android應用中讀取多媒體訊息檔案涉及到Android的一個資料庫/data/data/com.android.providers.telephony/databases/mmssms.db和一個檔案夾/data/data/com.android.providers.telephony/app_parts。要備份多媒體訊息,可以將這個資料庫和檔案夾拷貝到硬碟,但是在應用中卻不能通過openDatabase系列方法來讀這個資料庫,也不能通過直接開啟檔案來讀取附件檔案,因為你的應用不是它們的所
Time of Update: 2018-12-04
在前面我簡單的描述了Android的啟動過程http://blog.csdn.net/codectq/article/details/7383231,但終究是不夠完善。 現在在工程中遇到了實際的問題,反過來閱讀下代碼,再重新審視一下在kernel啟動之後的ANDROID啟動過程。 在frameworks/base/services/java/com/android/server檔案夾下的SystemServer.cpp檔案。在此檔案中調用了init1(
Time of Update: 2018-12-04
今天一個小項目終於塵埃落定,雖然本人在其中從事的工作很簡單,但是還是頗有一些心得想跟大家分享一下。 首先我們需要瞭解一下linux核心中驅動為何能被編譯進核心,在這裡有兩個很重要的檔案不得不提:Kconfig和Makefile。其中Kconfig是分布在各目錄的,這些Kconfig檔案構成了一個分布式的核心設定資料庫,每個Kconfig分別描述了所屬目錄來源文件相關的核心配置菜單,這就是我們使用make
Time of Update: 2018-12-04
在前文Android 4.0 觸控螢幕訊息(一大寫的一)中,我們從跟硬體最接近的兩個部分對整個觸控螢幕訊息的擷取進行了簡單的描述,但是對於我們系統來講此時的訊息並不好用,對於應用程式開發著而言更是極不方便。但是Android的產生就解決了Java開發的問題,使得整個開發過程周期變短。在android中,通過cook函數完成將未經處理資料轉化成應用程式可以使用的資料形式,這樣應用程式開發人員可以通過MotionEvent對象的方法來進行對不同的觸控螢幕動作做出相應的反應。
Time of Update: 2018-12-04
Android是整合了linux核心以及frameworks層的東西而形成為os,其中主要包含了三種語言的編程,主要是c、c++以及java。因此他們之間的通訊問題就顯得尤為突出。JAVA與c的通訊主要是通過JNI機制進行的。為了提高效率,在上層都使用java進行編程。因此在閱讀原始碼的過程中,就需要區分給使用者使用的檔案,系統內部使用的檔案,以及與驅動打交道的檔案。Android擷取系統訊息概述1、擷取原始的使用者訊息,包括按鍵、觸控螢幕、滑鼠、軌跡球等各種輸入裝置的訊息。2、對原始訊息進行一
Time of Update: 2018-12-04
按鍵在Android系統中,有著不同的代表意義。以前的全鍵盤的手機代碼沒有閱讀過,所以也不是很瞭解。本人介紹的是在觸控螢幕的手機上的按鍵訊息的處理流程。在現在觸控螢幕成為主流的輸入裝置的情況下,很多廠商都在努力的做到取消物理按鍵的工作,但是目前就本人的學習情況來看,完全取消在目前看來還是不是那麼現實。有如下幾點原因:首先,本人說明的是目前原生的Android系統上。其次,Android系統為了節省電量,在電源管理的過程中設定了休眠的方式。而休眠的時候觸控螢幕同樣進入休眠狀態。因此,不能夠接收到使
Time of Update: 2018-12-04
Time of Update: 2018-12-04
關於Android中的組件和應用,之前涉及,大都是靜態概念。而當一個應用運行起來,就難免會需要 關心進程、線程這樣的概念。在Android中,組件的動態運行,有一個最與眾不同的概念,就是Task,翻譯成任務,應該還是比較順理成章的。Task的介入,最主要的作用,是將組件之間的串連,從進程概念的細節中剝離出來,可以以一種不同模型的東西進行配置,在很多時候,能夠簡化上層開發人員 的理解難度,協助大家更好的進行開發和配置。任務 在
Time of Update: 2018-12-04
剛才又看了android的官方文檔,對它的進程優先順序和service理解得更多了。android為了管理記憶體釋放有限的空間,會根據優先順序殺掉一些進程,進程優先順序越低的優先被清除。從高到低依次為: 1. foreground process 2. visible process 3. service process 4. background process 5. empty process 這5種優先順序別,其中empty
Time of Update: 2018-12-04
前期下載,配置ndk環境在此忽略,之前有寫過。1:建立一個android 工程:比如叫項目名叫testNDK,程式名:testNDK,包名:com.cheng,activity:testNDK2:在包下建立一個java類,名字叫“JNI”,內容如下:package com.cheng;public class jni{ public native int GetCint(); public native String getCstring();
Time of Update: 2018-12-04
1.下載源碼android-2.1_r2,直接make2.出錯及解決如下:(1)/bin /bash: bison: command not found解決:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install bison(2)make: *** No rule to make target
Time of Update: 2018-12-04
Android程式有很多Activity,比如說主視窗A,調用了子視窗B,如果在B中直接finish(), 接下裡顯示的是A。在B中如何關閉整個Android應用程式呢?本人總結了幾種比較簡單的實現方法。 1. Dalvik VM的本地方法 android.os.Process.killProcess(android.os.Process.myPid()) //擷取PID System.exit(0); //常規java、c#的標準退出法,傳回值為0代表正常退出 2.
Time of Update: 2018-12-04
google昨天推出Android Studio,個人覺得不錯,正好看見有人寫了Android Studio,方便大家尋找,所以就裝載了。原文地址為http://www.android-fans.net/thread-6360-1-1.html工欲善其事,必先利其器。面對開發人員詬病的開發效率低、片段化日益嚴重的問題,從開發工具上著手似乎是最佳的選擇了。5月16日淩晨,Google2013年I/O開發人員大會在美國加州舊金山芳草地藝術中心開幕。大會上,Android
Time of Update: 2018-12-04
原文地址::http://blog.sina.com.cn/s/blog_4b650d650100nstz.html Android的源碼包,壓縮檔大概有3個G左右,要使用其中內建的一些源碼需要很多技巧,否則會提示找不到一些庫,大量的報錯讓人心神不定,不知所從. 我拿案頭代碼舉個例子吧.