• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            life02

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks

            #

                   startActivityForResult與startActivity的不同之處在于: 1, startActivity( ) 僅僅是跳轉到目標頁面,若是想跳回當前頁面,則必須再使用一次startActivity( )。
             2, startActivityForResult( )可以一次性完成這項任務,當程序執行到這段代碼的時候,頁面會跳轉到下一個Activity, 而當這個Activity被關閉以后(this.finish()),程序
            會自動跳轉會第一個Activity,并調用前一個Activity的onActivityResult( )方法。

             

            http://www.cnblogs.com/linjiqin/archive/2011/06/03/2071956.html

             

            android中使用startActivityForResult回傳數據(轉)

            假設:我這里有兩個Activity:A和B,從A中向B中傳遞數據的時候采用的是Bundle封裝數據,然后從A中跳轉到B中,當B有需求將數據 封裝起來回傳給A并跳轉回A。那么A中接收數據時還要先判斷Bundle是否為空,因為第一次訪問A的時候(即B還沒有回傳的時候),Bundle是為空 的,這樣顯然是比較麻煩的,不明智的做法。

            還好startActivityForResult來做跳轉給了我們更好的解決辦法。

            1.跳轉的時候不是采用startActivity(intent) 這個方法,而是startActivityForResult(intent, 0)。

            1 Intent intent=new Intent();
            2 intent.setClass(A.this, B.class);
            3 Bundle bundle=new Bundle();
            4 String str1="aaaaaa";
            5 bundle.putString("str1", str1);
            6 intent.putExtras(bundle);
            7 startActivityForResult(intent, 0);//這里采用startActivityForResult來做跳轉,此處的0為一個依據,可以寫其他的值,但一定要>=0

            2.重寫onActivityResult方法,用來接收B回傳的數據。

            1 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            2 switch (resultCode) { //resultCode為回傳的標記,我在B中回傳的是RESULT_OK
            3   case RESULT_OK:
            4 Bundle b=data.getExtras(); //data為B中回傳的Intent
            5   String str=b.getString("str1");//str即為回傳的值
            6 break;
            7 default:
            8 break;
            9 }
            10 }

            3.在B中回傳數據時采用setResult方法,并且之后要調用finish方法。

            setResult(RESULT_OK, intent); //intent為A傳來的帶有Bundle的intent,當然也可以自己定義新的Bundle
            finish();//此處一定要調用finish()方法

            這樣當B中調用finish方法的時候,跳轉到A時會自動調用onActivityResult方法,來獲取B中回傳的intent了。 
            詳細的代碼不貼了,那純屬浪費時間,網上關于startActivityForResult的全是些轉帖的,都是代碼,看著真心煩。

            posted @ 2011-12-06 21:48 life02 閱讀(423) | 評論 (0)編輯 收藏

                 摘要:   閱讀全文
            posted @ 2011-12-06 16:38 life02 閱讀(877) | 評論 (0)編輯 收藏

                 摘要:   閱讀全文
            posted @ 2011-12-06 11:30 life02 閱讀(2967) | 評論 (0)編輯 收藏

            google上面下載Android的SDK或者OPhonesdn 下載 Ophonesdk,解壓出來后在SDK的根目錄下有一個tools文件夾,雙擊emulator.exe,直接啟動模擬器

            1.模擬器外觀的定制:
            480x320, landscape: emulator -skin HVGA-L
            320x480, portrait : emulator -skin HVGA-P (default)
            320x240, landscape: emulator -skin QVGA-L
            240x320, portrait : emulator -skin QVGA-P
            2.為模擬器加上SD卡:
            emulator -sdcard D:\sdcard.img
            下面我們再來說說如何創建"sdcard.img"文件:
            “tools”目錄下還有另外一個很好用的工具“mksdcard.exe”,一看名字就知道——make sdcard。對,就用它來創建一個“SD卡”。
            命令為:
            mksdcard 512M D:\sdcard.img
            OK,這樣一個容量為512M的SD卡就創建完畢了。
            使用SDCard:
            創建: mksdcard <512M>
            (bytes(default),K,M)
            連接到模擬器: emulator -sdcard <目錄/sdcard.img>
            傳文件到SDCard: adb push <目錄/myaudio.mp3> 3、模擬器的通信
            GPhone的模擬器有個特有的號碼:15555218135,這個就類似我們實體手機的SIM卡號碼啦。

             



            正確啟動模擬器[SDK 1.5]
            安裝好JDK后,運行框中輸入cmd,回車后就會彈出個黑框。(接下來的大部分操作都是在這黑框下進行的)在黑框中輸入cd /d D:/ android-sdk-windows-1.5/tools/
            (這個路徑是我存放模擬器的路徑、大家要根據自己所存放的路徑輸入相應的路徑)
            輸入完正確的命令后就會自動彈出你所存放模擬器的路徑(如上圖)
            接著在這命令后面輸入android并回車,這時黑框中會彈出一堆的命令,看不懂也沒關系!我們滾動黑框見到最后一個命令的位置就好
            在最后的這個命名后面輸入android create avd -t 2 -n g1,并回車。『注意:這個命令中最后一個g1是可以任意取名的,你可以寫g2、android、gphone???之類的』
            【大家在操作這步的時候,要切記android與create與avd與-t與2與-n與g1之間都是有空格的 】
            這時又會彈出個新的命令出來!我們只要輸入no并回車就可以了
            結束以上的操作之后,打開存放SDK模擬器的文件,找到模擬器的程序右鍵點擊發送——桌面快捷方式
            回到桌面后,發現雙擊那個小綠人發現還是打不開模擬器!先不要著急、右鍵點擊屬性!在快捷方式-目標的路徑后面加上 -avd g1
            再次注意:這個-前面是要空格一下的,avd后面跟著的g1則要跟你在上一步黑框中所輸入的名字是一致的
            posted @ 2011-12-06 11:13 life02 閱讀(277) | 評論 (0)編輯 收藏

               啟動Android可以通過Eclipse的Avd與SDK Manager完成,另一種方法是通過命令行來完成模擬器的創建或啟動。方法如下:

            1. android list target 

            該命令顯示已安裝的android平臺,每個平臺有自己的id號。

             

            2.android create avd -n skwwt -t 11

            該命令創建一個新的模擬器,-n后面接創建模擬器的名字,-t后面接平臺的id,即(1)中顯示的id號。

             

            3.emulator @skwwt 或者 emulator -avd skwwt

            該命令啟動名字為skwwt的模擬器。


                 下面是我轉的一些關于Android模擬器的使用方法

             

             

                 1、Android模擬器介紹

              Android中提供了一個模擬器來模擬ARM核的移動設備。Android的模擬器是基于QEMU開發的,QEMU是一個有名的開源虛擬機項目(詳見http://bellard.org/qemu/),它可以提供一個虛擬的ARM移動設備。Android模擬器被命名為goldfish,用來模擬包括下面一些功能的ARM SoC:

              * ARM926ej-S CPU

              * Thumb support

              * MMC

              * RTC

              * Keyboard

              * USB Gadget

              * framebuffer

              * TTY driver

              * NAND FLASH

              Android模擬器所對應的源代碼主要在external/qemu目錄下。如果你想將Android移植到其他設備上,熟悉它目前所針對的模擬器環境可以提供一些參考。

              對于應用程序的開發者,模擬器提供了很多開發和測試時的便利。無論在Windows下還是Linux下,Android模擬器都可以順利運行,并且Google提供了Eclipse插件,可將模擬器集成到Eclipse的IDE環境。當然,你也可以從命令行啟動Android模擬器。

              這款模擬器功能非常齊全,電話本、通話等功能都可正常使用(當然你沒辦法真的從這里打電話)。甚至其內置的瀏覽器和Google Maps都可以聯網。用戶可以使用鍵盤輸入,鼠標點擊模擬器按鍵輸入,甚至還可以使用鼠標點擊、拖動屏幕進行操縱。

              當然模擬器畢竟是模擬器,和真實的機子還是存在差別的,

              android模擬器和真機的不同之處:

              * 不支持呼叫和接聽實際來電;但可以通過控制臺模擬電話呼叫(呼入和呼出)

              * 不支持USB連接

              * 不支持相機/視頻捕捉

              * 不支持音頻輸入(捕捉);但支持輸出(重放)

              * 不支持擴展耳機

              * 不能確定連接狀態

              * 不能確定電池電量水平和交流充電狀態

              * 不能確定SD卡的插入/彈出

              * 不支持藍牙

              2、創建和啟動Android模擬器

              要玩GPhone的模擬器,當然需要先去http://developer.android.com/sdk(如果打不開就用http://androidappdocs.appspot.com/sdk/index.html)上面下載Android 的SDK,解壓出來后在SDK的根目錄下有一個tools文件夾,里面就是模擬器和一些非常有用的工具。(SDK詳細的安裝過程請參照 http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx)

              要正確的啟動模擬,你必須先要創建一個 AVD( Android Virtual Device 虛擬設備 )

            ,你可以利用AVD創建基于不同版本的模擬器,下面就介紹如何創建AVD:

             

              (1) 查看當前支持版本(在列出的版本中我們需要記住id值,這個值在第2步中使用):

              magicyu@magicyu-desktop:~$ android list target

              你可以看到幾個Available Android targets,比如:Name: Android 1.6,他們有各自的id號。

              (2) 創建AVD:

              magicyu@magicyu-desktop:~$ android create avd -n magicyu -t 2

              -n后面接需要創建avd的名字,-t后面接需要創建虛擬器的類型,2即為步驟(1)中得到的類型id號。

              (3) 查看是否創建成功(如果成功會顯示剛才我們創建的avd信息):

              magicyu@magicyu-desktop:~$ android list avd

              (4) 啟動模擬器:

              magicyu@magicyu-desktop:~$ emulator @magicyu 或者

              emulator -avd magicyu

              其中@和-avd后接的是你創建過的avd名字

              (5) 選擇啟動的皮膚

              magicyu@magicyu-desktop:~$ emulator -avd magicyu -skin QVGA

              skin后面接所要啟動皮膚的類型,所有的類型可以在/ platforms/android-1.*/skins目錄下找到,*為所指的版本。如在1.6版本的SDK下有HVGA,QVGA, WVGA800,WVGA854幾種。按Ctrl+F11,可以直接改變模擬器的橫縱擺放。

              當然AVD也可以在Eclipse中創建和啟動。關于Eclipse+ADT+SDK的安裝請參見http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx。

              運行Eclipse,Window->Android SDK and AVD Manager,就能得到如下的界面,選擇新建即可新建一個AVD。

            posted @ 2011-12-06 11:02 life02 閱讀(1788) | 評論 (0)編輯 收藏

            在SDK的Tools文件夾下包含著Android模擬器操作的重要命令adb,adb的全稱為Android Debug Bridge就是調試橋的作用。通過adb我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具。

            adb的工作方式比較特殊采用Socket TCP 5554等端口的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網絡端口,所以當我們運行Eclipse時adb進程就會自動運行。

            1.通過adb可以輕松地執行Linux Shell命令,進入設備或模擬器的shell:adb shell就可以進入模擬器的shell環境中。也可以執行各種Linux的命令,其命令格式為:adb shell command
            例如:
            adb shell dir 就是列舉目錄,在Linux中根目錄為/而不是Windows上的C盤,D盤.
            adb shell dmesg 會印出Linux的debug信息。
            2.安裝apk程序到模擬器

            則執行adb install android123.apk,這樣名為android123的安裝包就會安裝到Android模擬器中,前提是android123.apk文件需要放到SDK/Tools目錄下。
            3.向emulator傳送文件
            使用adb push android123.txt /tmp/android123.txt命令可以把SDK/Tools下的android123.txt文件傳送到模擬器的/tmp/文件夾中,需要注意的是/tmp/文件夾中內容會在Android模擬器新啟動時清空
            4.從Android模擬器中回傳文件到電腦
            通過adb pull /tmp/android123.txt android123.txt命令就會把模擬器的tmp文件夾下android123.txt文件回傳到電腦SDK/Tools目錄下。

            繼續android adb命令相關介紹,除了可以方便的安裝apk文件、pc和Android模擬器互傳資料外還有Android Debug Bridge一些輔助的功能。
            1.如果在Eclipse中發現有* daemon not running. starting it now *的提示可以結束adb
            adb kill-server

            2.顯示android模擬器狀態
            adb devices 端口號等信息,執行后會現實TCP端口號
            adb get-product 獲取設備型號
            adb get-serialno 獲取序列號

            3.等待正在運行的設備
            adb wait-for-device

            4.端口轉發adb forward adb forward tcp:5555 tcp:1234 實現將默認的TCP 5555端口轉發到1234端口上

            5.查看bug報告
            adb bugreport

            posted @ 2011-12-05 20:01 life02 閱讀(508) | 評論 (0)編輯 收藏

            Android Emulator 備忘指令

            發表於 一月 8, 2011 在 Android 分類. 10 則評論

            • Android 模擬器命令列啟動模式

            在 android-sdk-windows-1.1\tools 執行 emulator 以執行模擬器
            加上-skin參數,指定顯示模式為 HVGA-L,則可轉為橫向

            emulator – skin HVGA-L (480*320
            ,水平顯示)
            emulator – skin HVGA-L (320*480
            ,垂直顯示,模擬器預設模式)
            emulator – skin HVGA-L (320*240
            ,水平顯示)
            emulator – skin HVGA-L (240*320
            ,垂直顯示)

            • 使用 mksdcard 指令模擬 1GB 的記憶卡

            mksdcard 1024M sacard.img

            • 模擬插入 SD 卡的模擬器

            emulator – sdcard sdcard.img

            • 使用 adb+push 上載檔案到 SD 記憶卡

            adb push 001.jpg /sdcard (複製檔案到 /sdcard 目錄下)
            adb push pictures /sdcard (
            複製 picture 照片目錄到 /sdcard 目錄下)
            adb push mp3 /sdcard (
            複製 mp3 音樂目錄到 /sdcard 目錄下)
            adb shell (Android
            模擬器啟動命令列模式)
            #cd /sdcard (
            進入 /sdcard 目錄)
            #ls (
            查看 SD 記憶卡中的檔案)

            • 使用 adb+pull 從 SD 記憶卡下載檔案

            adb pull /sdcard/001.jpg . (下載 /sdcard 目錄下的檔案)
            adb pull /sdcard/pictures . (
            下載 sdcard 目錄下的 pictures 目錄)

            • 刪除 SD 卡裡面的檔案

            adb shell
            #ced /sdcard
            #rm 001.jpg (
            刪除 SD 記憶卡裡的檔案)
            #rm -r * (
            刪除 SD 記憶卡裡所有檔案與目錄)

            • Android模擬器影片播放方法

            mksdcard 4096M video.img (製作一個影像檔的 SD 記憶卡)
            adb push video.avi /sdcard (
            從電腦複製影像檔到 SD 卡中)
            emulator -sdcard video.img (
            啟動模擬器並載入 SD 卡)
            下載免費的影片播放軟體,ex: Meridian Video Player (iiivpa.apk)

            http://sites.google.com/site/eternalsandbox/Home/meridian-video-player

            adb install iiivpa.apk (安裝Meridian Video Player)
            接下來就可以用裝上去的player播放.mp4、3gp與.wmv三種檔案格式

            • 安裝 APK 應用程式

            adb install filename.apk (安裝filename.apk)
            adb install -r filename.apk (
            保留已設定資料,重新安裝filename.apk)
            adb -s emulator-5554 install filename.apk (
            指定安裝 APK 套件在 5554 的 Android 模擬器中)

            • 移除 APK 應用程式

            adb uninstall package
            adb uninstall -k package (
            移除程式時,保留資料)
            此package名稱不是安裝APK套裝時的檔名或顯示在模擬器中的應用程式名稱
            可以先到/data/data或data/app目錄下,查詢想移除的package名稱
            adb shell
            ls /data/data
            或 /data/app (查詢 Package 名稱)
            exit
            adb uninstall package (
            移除查詢到的 Package)

            • ADB 系統除錯與連結工具

            $adb devices (顯示目前有多少個模擬器正在執行)
            $adb -s (
            指定模擬器來操作)
            adb -s emulator-5554 install email.apk
            $adb install apkfile (
            安裝 APK 應用程式套件)
            adb install email.apk
            $adb uninstall package (
            移除 APK 應用程式套件)
            adb uninstall com.android.email
            $adb shell (
            進入 Android 系統指令列模式)
            $ls
            $dmesg (
            查看 Android Linux Kernel 運作訊息)
            ls –
            顯示檔案目錄
            cd –
            進入目錄
            rm –
            刪除檔案
            mv –
            移動檔案
            mkdir –
            產生目錄
            rmdir –
            刪除目錄 $adb push (複製檔案到 SD )
            adb push mp3 /sdcard
            $adb pull . (
            從 Android 系統下載檔案)
            adb pull /data/app/com.android.email
            $adb logcat (
            監控模擬器運作紀錄,以Ctrl + c 離開監控模式)
            $adb bugreport (
            產生 adb 除錯報告)
            $adb get-state (
            獲得 adb 伺服器運作狀態)
            $adb start-server (
            啟動 adb 伺服器)
            $adb kill-server (
            關掉 adb 伺服器)
            $adb forward tcp:6100 tcp:7100 (
            更改模擬器網路 TCP 通訊埠)
            $adb shell ps -x (
            顯示 Android 上所有正在執行的行程)
            $adb version (
            顯示 adb 版本)
            $adb help (
            顯示 adb 指令參數)

            • Emulator 命令列啟動參數

            emulator -timezone Asia/Taipei (指定時區)
            emulator -no-boo-anim (
            省略開機小機器人動畫畫面)
            emulator -scale auto (
            調整模擬器視窗大小)
            emulator – scale factor (factor: 0.1-3.0)
            emulator -dpi-device 300 (
            更改模擬器的解析度,default為 165dpi)
            emulator -skin (
            更改模擬器顯示模式)
            emulator -help-keys (
            顯示鍵盤快速鍵說明)
            emulator -shell (
            相當於adb shell 功能)
            emulator -data data.img (
            使 /data 目錄使用 data.img 的檔案空間)
            emulator -sdcard sdcard.img (
            使 /sdcard 目錄使用 sdcard.img 的檔案空間)
            emulator -cache cache.img (
            瀏覽器暫存檔儲存空間)
            emulator -wipe-data (
            使模擬器恢復到原廠設定)
            emulator -help (
            顯示 emulator 指令參數)

             


            posted @ 2011-12-05 19:54 life02 閱讀(572) | 評論 (0)編輯 收藏

            安裝APK文件到Android模擬器

            Android手機使用的執行文件為APK格式,類似于Windows平臺的exe文件。在Android模擬器中安裝APK文件有多種方法,如果 你是開發人員,可以通過Eclipse+ADT,使用DDMS可以傳輸文件。大多數可以直接在Windows的cmd中操作就可以了。

            一、首先在Android SDK的Tools文件夾中找到emulator.exe文件并運行,這時Android模擬器就啟動了,

            二、 將android123.apk文件復制到Android SDK的Tools目錄中(點擊下載Android123.apk文件),使用cmd的cd命令定位到Android 模擬器目錄Tools中,執行adb install android123.apk命令,這時模擬器將會自動執行安裝。 

            三、在Android模擬器中可以找到我們安裝好的文件-Android手機之家。

            四、 用鼠標單擊這個文件就可以看到Android手機之家網站的演示程序。 

              寫在最后我們可以發現安裝Android軟件到模擬器很簡單,只需要執行adb install命令就可以了,當然其實我們做的是復制文件到Android模擬器的/data/app文件夾,并創建了一個快捷方式。

             

            Android sdcard的使用

             

            (下面是在linux運行的,而且是在sdcard的鏡像文件同一目錄下進行操作的)
            這兩天在實現播放器列表實現,其中需要使用到Sdcard,在網上收集到了一些sdcard的使用,發現幾乎都是錯誤的,最后經過小組幾個人的探討,終于將sdcard使用成功了。下面就將使用sdcard的使用步驟總結下來:
            我們在網上會發現,很多人都是這樣來操作sdcard的:
            1、首先是生成sdcard鏡像文件sdcard.img或者是其他的名稱。命令為:mksdcard -l sdcard capacity directory
            例如:mksdcard 1024M D:\sdcard.img

            directory 指的是鏡像文件存放的目錄,capacity就是要創建的鏡像文件的容量。這里將鏡像文件放在當前目錄下。

            2、之后,啟動模擬器:emulator -sdcard sdcard鏡像文件的目錄
            例如:emulator -sdcard D:\sdcard.img

            3、打開另外一個終端,輸入下面命令來將資源放入到sdcard里面
            adb push source-file sdcard的鏡像文件目錄
            這個時候會發現這是不能成功的,會得出Read Only System 這樣的錯誤失敗提示。
            這里,來分析一下為什么會失敗。
            在 創建sdcard鏡像文件的時候,生成的sdcard.img只是一個鏡像文件,而不是一個真正的目錄,所以如果要將資源文件放入到sdcard的鏡像文 件中,當然是錯誤的,而我們會發現,sdcard是Android中的存儲模擬設備,類似于計算機的硬盤一樣,這樣我們可以向其中放入資源文件,即可以將 命令adb push <目錄/audio.mp3> </sdcard/audio.mp3>的鏡像文件目錄
            改為 adb push <目錄/audio.mp3> </sdcard.之后,我們進入adb shell中檢查是否將文件放入了sdcard中,使用命令adb shell,ls一下,找到sdcard,檢查一下sdcard中,這時,sdcard中已經擁有資源了,即我們的push命令運行成功。
            以上就是sdcard存儲資源的使用。

             

            adb命令的使用

            adb(Android Debug Bridge)是Android 提供的一個通用的調試工具,借助這個工具,我們可以管理設備或手機 模擬器 的狀態 。還可以進行以下的操作:
            1、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;
            2、在設備上運行shell命令;
            3、管理設備或手機模擬器上的預定端口;
            4、在設備或手機模擬器上復制或粘貼文件;

            以下為一些常用的操作:
            1、安裝 應用到模擬器:
            adb install
            比較遺憾的是,Android并沒有提供一個卸載 應用的命令,只能自己手動刪除 :
            adb shell
            cd /data/app
            rm app.apk
            2、進入設備或模擬器的shell:
            adb shell
            通過上面的命令,就可以進入設備或模擬器的shell環境中,在這個Linux Shell中,你可以執行各種Linux 的命令,另外如果只想執行一條shell命令,可以采用以下的方式:
            adb shell [command]
            如:adb shell dmesg會打印出內核的調試信息。
            3、發布端口:
            可以設置任意的端口號,做為主機 向模擬器或設備的請求端口。如:
            adb forward tcp:5555 tcp:8000
            4、復制文件 :
            可向一個設備或從一個設備中復制文件,
            復制一個文件或目錄到設備或模擬器上:
            adb push
            如:adb push test.txt /tmp/test.txt
            從設備或模擬器上復制一個文件或目錄:
            adb pull
            如:adb pull /addroid/lib/libwebcore.so .
            5、搜索模擬器/設備的實例:
            取得當前運行的模擬器/設備的實例的列表及每個實例的狀態:
            adb devices
            6、查看bug報告:
            adb bugreport
            7、記錄無線通訊日志:
            一般來說,無線通訊的日志非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設置記錄:
            adb shell
            logcat -b radio
            8、獲取設備的ID和序列號:
            adb get-product
            adb get-serialno
            9、訪問數據庫SQLite3
            adb shell
            sqlite3

            10、通過gsm call命令可以像Android 模擬器打電話 ,除了在EclipseADT 的DDMS中通過按鈕Dial外,還可以通過DDMS外殼調用gsm call命令直接撥打,我們首先需要啟動AndroidEmulator,然后在cmd環境下執行telnet localhost 5554 下面就可以向Android模擬器 撥號,參數為gsmcall < phoneNum> ,比如給10086打電話 為gsm call +10086


            posted @ 2011-12-05 19:34 life02 閱讀(570) | 評論 (1)編輯 收藏

            emlulator可以在運行時與eclipse聯起來測試. 但怎么測試己經打好包的apk呢?

            何果打apk就先不說了.

             

            1 把apk放到emulator里,安裝,運行:(avd運行,安裝apk)

               運行cmd :

                android-sdk-windows-1.5_r3\tools>adb install snake-sample.apk

              就OK了. 你打開emulator就看到了.

             

            2 如何在live-CD里按裝apk呢?

             

            把apk放到網絡上的一個地方, 然后下載(我試圖放到hotmail的復件里,但不行, 又放到163的復件里, 也不行,后來我自己起了個tomcat點擊下載的). 會下載到sdcard/download/目錄下.

            把它copy到/data/app就自動按好了.


            posted @ 2011-12-05 19:32 life02 閱讀(296) | 評論 (0)編輯 收藏

            很多初入Android開發的網友向我們問到Context有什么作用,很多地方都用到它,這里Android123給這些新入門的網友做個簡單的解釋:

               Context字面意思上下文,位于framework package的android.content.Context中,其實該類為LONG型,類似Win32中的Handle句柄,很多方法需要通過Context才能識別調用者的實例,比如說Toast的第一個參數就是Context,一般在Activity中我們直接用this代替,代表調用者的實例為Activity,而到了一個button的onClick(View view)等方法時,我們用this時就會報錯,所以我們可能使用ActivityName.this來解決,主要原因是因為實現Context的類主要有Android特有的幾個模型,Activity、Service以及BroadcastReceiver。

              常規需要Context實例的方法主要有各種Service實現的類,比如說SensorManager在實例化時需要getSystemService(String)方法就必須由Context的實例執行,還有一些私有的文件系統I/O比如說openFileInput以及常用的Toast的makeText方法。

            在android中context可以作很多操作,但是最主要的功能是加載和訪問資源。在android中有兩種context,一種是 application context,一種是activity context,通常我們在各種類和方法間傳遞的是activity context。
            比如一個activity的onCreate:
            protected void onCreate(Bundle state) {
                    super.onCreate(state);

                    TextView label
            = new TextView(this); //傳遞context給view control
                    label.setText("Leaks are bad");

                    setContentView(label);
            }
            把activity context傳遞給view,意味著view擁有一個指向activity的引用,進而引用activity占有的資源:view hierachy, resource等。
            這樣如果context發生內存泄露的話,就會泄露很多內存。
            這里泄露的意思是gc沒有辦法回收activity的內存。

            Leaking an entire activity是很容易的一件事。

            當屏幕旋轉的時候,系統會銷毀當前的activity,保存狀態信息,再創建一個新的。

            比如我們寫了一個應用程序,它需要加載一個很大的圖片,我們不希望每次旋轉屏 幕的時候都銷毀這個圖片,重新加載。實現這個要求的簡單想法就是定義一個靜態的Drawable,這樣Activity 類創建銷毀它始終保存在內存中。
            實現類似:
            public class myactivity extends Activity {
                   
            private static Drawable sBackground;
                   
            protected void onCreate(Bundle state) {
                            super.onCreate(state);

                            TextView label
            = new TextView(this);
                            label.setText(
            "Leaks are bad");

                           
            if (sBackground == null) {
                                    sBackground
            = getDrawable(R.drawable.large_bitmap);
                            }
                    label.setBackgroundDrawable(sBackground);
            //drawable attached to a view

                    setContentView(label);
                    }
            }
            這段程序看起來很簡單,但是卻問題很大。當屏幕旋轉的時候會有leak(即gc沒法銷毀activity)。
            我們剛才說過,屏幕旋轉的時候系統會銷毀當前的activity。但是當drawable和view關聯后,drawable保存了view的 reference,即sBackground保存了label的引用,而label保存了activity的引用。既然drawable不能銷毀,它所 引用和間接引用的都不能銷毀,這樣系統就沒有辦法銷毀當前的activity,于是造成了內存泄露。gc對這種類型的內存泄露是無能為力的。

            避免這種內存泄露的方法是避免activity中的任何對象的生命周期長過activity,避免由于對象對 activity的引用導致activity不能正常被銷毀。我們可以使用application context。application context伴隨application的一生,與activity的生命周期無關。application context可以通過Context.getApplicationContext或者Activity.getApplication方法獲取。

            避免context相關的內存泄露,記住以下幾點:
            1. 不要讓生命周期長的對象引用activity context,即保證引用activity的對象要與activity本身生命周期是一樣的
            2. 對于生命周期長的對象,可以使用application context
            3. 避免非靜態的內部類,盡量使用靜態類,避免生命周期問題,注意內部類對外部對象引用導致的生命周期變化



            posted @ 2011-12-05 17:13 life02 閱讀(343) | 評論 (0)編輯 收藏

            僅列出標題
            共20頁: First 9 10 11 12 13 14 15 16 17 Last 
            99久久香蕉国产线看观香| 日韩一区二区久久久久久 | 亚洲中文字幕无码久久综合网| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 欧美日韩中文字幕久久伊人| 国产综合精品久久亚洲| 国产精品乱码久久久久久软件 | 青青青青久久精品国产h| 色播久久人人爽人人爽人人片aV| 久久婷婷国产剧情内射白浆| 99久久国产热无码精品免费| 久久免费观看视频| 成人久久精品一区二区三区| 久久精品亚洲福利| 国产成人精品久久二区二区| 四虎影视久久久免费| 久久91精品国产91久久小草| 久久香综合精品久久伊人| 久久精品国产91久久麻豆自制 | 国产精品丝袜久久久久久不卡 | 亚洲精品无码久久毛片| 精品一区二区久久| 无码人妻少妇久久中文字幕蜜桃 | 三级韩国一区久久二区综合| 久久精品中文字幕久久| 久久婷婷五月综合97色直播| 欧美午夜A∨大片久久| 99久久精品国产免看国产一区| 久久综合亚洲鲁鲁五月天| 狠狠久久综合伊人不卡| 色噜噜狠狠先锋影音久久| 国内精品久久久久影院日本| 久久无码AV一区二区三区| 久久精品国产清自在天天线| 亚洲国产精品一区二区久久| 色综合久久综合中文综合网| 亚洲国产精品无码久久九九 | 亚洲v国产v天堂a无码久久| Xx性欧美肥妇精品久久久久久| 久久精品国产精品亚洲精品| 99久久99久久|