當前位置:首頁 » 安卓系統 » android怎麼計算

android怎麼計算

發布時間: 2022-06-25 18:24:10

安卓系統里怎麼計算存儲空間

一般程序是以1024計算 ,硬體標示按1000算,這也就為什麼32G的盤在電腦上或是手機上顯示出來沒32G的存儲空間。

㈡ 怎麼計算android app啟動時間

事實上 Android 中一個 App 的啟動時間可以准確計算的.但是要分場景.也就是說要分開游戲和應用. 大家都知道,在Android中,游戲開發和應用開發是兩碼事.所以我們需要分開來說.
1.1 應用啟動
我們平時在寫應用的時候,一般會指定一個 mainActivity ,用戶在桌面上點擊這個 Activity 的時候,系統會直接起這個 Activity. 我們知道 Activity 在啟動的時候會走 onCreate/onStart/onResume .這幾個回調函數.
許多書里講過,當執行完 onResume 函數之後,應用就顯示出來了…其實這是一種不準確的說法,因為從系統層面來看,一個 Activity 走完 onCreate/onStart/onResume 這幾個生命周期之後,只是完成了應用自身的一些配置,比如 window 的一些屬性的設置/ View 樹的建立(只是建立,並沒有顯示,也就是說只是調用了 inflate 而已) . 後面 ViewRootImpl 還會調用兩次performTraversals ,初始化 Egl 以及 measure/layout/draw. 等.所以我們定義一個 Android 應用的啟動時間, 肯定不能在 Activity 的回調函數上下手.而是以用戶在手機屏幕上看到你在 onCreate 的 setContentView 中設置的 layout 完全顯示為准,也就是我們常說的應用第一幀.
上面扯得有點遠,不感興趣的話可以不看,下面直接說方法.題主說的 adb shell am start -w packagename/activity,是可以完全應用的啟動時間的.不過也要分場景.
1.2 應用第一次啟動
也就是我們常說的冷啟動,這時候你的應用程序的進程是沒有創建的. 這也是大部分應用的使用場景.用戶在桌面上點擊你應用的 icon 之後,首先要創建進程,然後才啟動 MainActivity.這時候adb shell am start -w packagename/MainActivity 返回的結果,就是標準的應用程序的啟動時間(注意 Android 5.0 之前的手機是沒有 WaitTime 這個值的):
➜ adb shell am start -W com.meizu.media.painter/com.meizu.media.painter.PainterMainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.meizu.media.painter/.PainterMainActivity }
Status: ok
Activity: com.meizu.media.painter/.PainterMainActivity
ThisTime: 355
TotalTime: 355
WaitTime: 365
Complete

總共返回了三個結果,我們以 WaitTime 為准.
關於ThisTime/TotalTime/WaitTime的區別,下面是其解釋:
「adb shell am start -W 」的實現在 frameworks\base\cmds\am\src\com\android\commands\am\Am.java 文件中。其實就是跨Binder調用ActivityManagerService.startActivityAndWait() 介面(後面將ActivityManagerService簡稱為AMS),這個介面返回的結果包含上面列印的ThisTime、TotalTime時間.

startTime記錄的剛准備調用startActivityAndWait()的時間點
endTime記錄的是startActivityAndWait()函數調用返回的時間點
WaitTime = startActivityAndWait()調用耗時。
ThisTime、TotalTime 的計算在 frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java 文件的 reportLaunchTimeLocked() 函數中。

我們來解釋下代碼里curTime、displayStartTime、mLaunchStartTime三個時間變數.
curTime表示該函數調用的時間點.
displayStartTime表示一連串啟動Activity中的最後一個Activity的啟動時間點.
mLaunchStartTime表示一連串啟動Activity中第一個Activity的啟動時間點.
正常情況下點擊桌面圖標只啟動一個有界面的 Activity,此時 displayStartTime 與mLaunchStartTime 便指向同一時間點,此時 ThisTime=TotalTime。另一種情況是點擊桌面圖標應用會先啟動一個無界面的 Activity 做邏輯處理,接著又啟動一個有界面的Activity,在這種啟動一連串 Activity 的情況下(知乎的啟動就是屬於這種情況),displayStartTime 便指向最後一個 Activity 的開始啟動時間點,mLaunchStartTime 指向第一個無界面Activity的開始啟動時間點,此時 ThisTime!=TotalTime。
看到這里應該清楚 ThisTime、TotalTime、WaitTime 三個時間的關系了吧。WaitTime 就是總的耗時,包括前一個應用 Activity pause 的時間和新應用啟動的時間;ThisTime 表示一連串啟動 Activity 的最後一個 Activity 的啟動耗時;TotalTime 表示新應用啟動的耗時,包括新進程的啟動和 Activity 的啟動,但不包括前一個應用 Activity pause 的耗時。也就是說,開發者一般只要關心 TotalTime 即可,這個時間才是自己應用真正啟動的耗時。
Event log中 TAG=am_activity_launch_time 中的兩個值分表表示 ThisTime、TotalTime,跟通過 「adb shell am start -W 」 得到的值是一致的。
最後再說下系統根據什麼來判斷應用啟動結束。我們知道應用啟動包括進程啟動、走 Activity生命周期 onCreate/onResume 等。在第一次 onResume 時添加窗口到WMS中,然後measure/layout/draw,窗口繪制完成後通知 WMS,WMS 在合適的時機控制界面開始顯示(夾雜了界面切換動畫邏輯)。記住是窗口界面顯示出來後,WMS 才調用reportLaunchTimeLocked() 通知 AMS Activity 啟動完成。
最後總結一下,如果只關心某個應用自身啟動耗時,參考TotalTime;如果關心系統啟動應用耗時,參考WaitTime;如果關心應用有界面Activity啟動耗時,參考ThisTime。
1.2 應用非第一次啟動
如果是你按Back鍵,並沒有將應用進程殺掉的話,那麼執行上述命令就會快一些,因為不用創建進程了,只需要啟動一個Activity即可。這也就是我們說的應用熱啟動。
2 游戲啟動場景
游戲啟動的話,就不適用用命令行的方法來啟動了,因為從用戶點擊桌面圖標到登錄界面,既有系統的部分也有游戲自己的部分。
2.1 系統部分
游戲也有一個Activity,所以啟動的時候還是會去啟動這個Activity,所以系統啟動部分也就是用戶點擊桌面桌面響應到這個Activity啟動。
2.2 游戲部分
一般游戲的主Activity啟動後,還會做一些比較耗時的事情,這時候你看到的界面是不能操作的,比如:載入游戲數據、聯網更新數據、讀取和更新配置文件、游戲引擎初始化等操作。從游戲開發的角度來看,到了真正用戶能操作的界面才算是一個游戲真正載入完成的時間。那麼這個時間,就得使用Log來記錄了,因為載入游戲數據、聯網更新數據、讀取和更新配置文件、游戲引擎初始化這些操作,都是游戲自己的邏輯,與系統無關,所以得由游戲自己定義載入完成的點。
對於游戲的啟動時間,我們更傾向於計算從 點擊桌面圖標 到 用戶可以與游戲進行交互 這個時間段作為一個游戲的啟動時間。
3 總結
計算機最讓人著迷的一點就是其准確性,1+1永遠等於2,啟動耗時多久就是多久,每一次可能不一樣,但每一次的時間都是這一次的准確時間。
不過每個公司由於對應用的定位不同,所以對應用啟動的要求也不一樣。比如有的做 ROM 的公司,其內置應用的啟動時間一定是要非常快的,這樣給用戶的第一感覺就是快、流暢;互聯網公司的 App 則不是很關心啟動速度,大部分互聯網公司的應用都有一個啟動頁,用來展示廣告或者功能介紹之類的,然後才會進入到主界面。需求不一樣,這么做也無可厚非,不過從消費者的角度來看,越早見到主界面當然越好。
所以在做一個 Android App 的時候,一定要記得將應用的啟動時間作為一個性能指標,畢竟
天下武功,唯快不破!

㈢ Android 如何計算屏幕顯示的字元數(漢字)

1.
工具欄
上的
字數
統計
右鍵單擊工具欄空白處,在彈出的
菜單
中選擇【
自定義
】,打開「自定義」對話框,然後在「命令」選項卡中選擇「工具」類別,如圖1所示,再在「命令」列表中選擇「字數統計…」,接下來用
滑鼠
左鍵將這個命令拖放到word工具欄上,此後,工具欄上便多出一個「字數統計(w)…」按鈕,再需要統計
文檔
字數的時候,點一下就ok了。
2.巧用域實現字數統計
打開菜單【插入→域】,選擇「類別」中的「文檔信息」,再在「域名」中選中「numchars」,【確定】退出,則在文檔中出現
阿拉伯數字
形式
的統計
字元
數。
如果你變動了文章的內容,需要再次統計字數時,只要選中剛才得到的阿拉伯數字,
點擊滑鼠
右鍵,單擊【更新域】命令,新的統計結果就馬上呈現在你面前了。
3.不打開word進行字數統計
對於一些已經編輯完成且關閉的word文檔,我們完全可以在不打開word的情況下進行字數統計。
以在windows98中為例,在
資源管理器
中選中要統計字數的word文檔,右鍵單擊滑鼠,在
快捷菜單
中選【屬性】,在彈出的對話框中點選「統計」選項卡,即可查看該文檔的頁、
段落
、行數、字數等信息。

㈣ 關於android軟體開發中如何進行數據計算的問題!

te1對應第一個文本框,以此類推。
int ite1 = Integer.parseInt(te1.getText().toString());
int ite2 = Integer.parseInt(te2.getText().toString());
int ite3 = Integer.parseInt(te3.getText().toString());
int ite4 = Integer.parseInt(te4.getText().toString());
int sum = 0;

if(ite1 < ite4 || ite2 < ite4 || ite3 < ite4) sum = ite1 + ite2 + ite3 + ite4;
te5.setText(String.valueOf(sum));

㈤ Android中手機屏幕密度該怎麼計算

為解決Android設備碎片化,引入一個概念density,也就是密度.它指的是在一定尺寸的物理屏幕上顯示像素的數量,一般使用dpi(dots per inch,每英寸像素數)作為單 位.比如設備解析度為240x320,屏幕物理尺寸為1.5英寸x2英寸(對角線為2.5)它的密度可以用解析度/尺寸表示:240/1.5或者即320/2,密度為160dpi。算對角線也是一樣 的,長的平方+寬的平方=160000,開方後=400.可知400/2.5=160.對於用戶來說,密度越大的屏幕顯示效果越精細,因為每英寸顯示的像素數量更多。 以上的描述就是一個藍本(此藍本對應於mdpi). 按照此藍本一個dp相當於160dpi屏幕中的一個px.同理在,在320dpi的屏幕中,一個dp相當於2個px. 通過這樣的成比例放縮,Android解決了需要多個不同屏幕中的大小顯示問題. 所以在Eclipse的布局文件中,以3.7in WVGA(Nexus One)(480x800)為例,可以看見其為sw320dp,h533dp. 即寬有320dp,高為533dp. 是怎麼計算出來的呢? 將(480的平方+800的平方)開方=932.9523031 然後932.9523031/屏幕尺寸3.7=252.14927,此結果為此手機的屏幕密度. 然後按照上面的藍本,就應該要計算在該手機上1dp對於多少px.計算如下: 160 1dp=1px 252.14927 1dp=?px 結果為: 252.14927/160=1.5759329 注意: 在此一般不取1.5759329,只取到1.5即可. 所以:480/1.5=320;800/1.5=533.3333(通常取為533),即上述的sw320dp,h533dp. 手機屏幕密度的對應關系 120上下浮動的都屬於ldpi 160上下浮動的都屬於mdpi 240上下浮動的都屬於hdpi 320上下浮動的都屬於xdpi 以摩托羅拉ME525+(3.7英寸 解析度854x480像素)為例: 將(480的平方+854的平方)開方=979.6509 然後979.6509/屏幕尺寸3.7=264.770529,此結果為此手機的屏幕密度.對應為hdpi 264.770529/160=1.6548 即在此手機中1dp=1.6548個像素,只取到1.6即可 所以:480/1.6=300;854/1.6=533.75(通常取為533) 按照這個邏輯,算出來的寬應該是只有300dp.悲劇的是,如果某個控制項的寬為300,在此手機上是不能鋪滿手機的寬的. 也就是說除以的不是1.6而還是1.5!!!!所以將寬設置為320即可 總結:在hdpi中,像素轉換為dp統一用的是:像素/1.5 以聯想K860(5.0英寸,解析度1280x720像素)為例: 將(1280的平方+720的平方)開方=1468.60478 然後1468.60478/屏幕尺寸5=293.720,此結果為此手機的屏幕密度.對應為xdpi 293.720/160=1.8357 即在此手機中1dp=1.8357個像素 所以:1280/1.8357=697.281;720/1.8357=392.22 按照這個邏輯,算出來的寬應該是392.22.悲劇的是,如果某個控制項的寬為392.22,在此手機上是顯示不完全的. 也就是說除以的不是1.8而是2!!!!所以將寬設置為360即可 總結:在xdpi中,像素轉換為dp統一用的是:像素/2 注意問題1: 在建立模擬器的時候注意 854x480在Hardware中,應該將Abstracted LCD density設置為240,並手動輸入解析度 1280x720在Hardware中,應該將Abstracted LCD density設置為320,並手動輸入解析度 注意問題2: 多個layout文件夾在命名上有相應規則,以解析度480x854為例,需要建立480x854像素的layout文件夾,命名:layout-854x480,有兩點需要注意:①大數(854)必須在前, 否則會報錯;②兩個數字之間的符號是小寫英文字母“x”,不是乘號

㈥ 用android怎麼做計算BMI值得程序

應用的操作和原理

目標Android應用的操作過程是這樣的:選擇你的性別,然後輸入你的身高,點查看計算結果的按鈕就在Toast中顯示你的標准體重。力求操作簡單,結果顯示清楚。

標准體重的計算公式:

男性:(身高cm-80)×70%=標准體重

女性:(身高cm-70)×60%=標准體重

應用的源碼

BMIActivity.java:

packagecom.ling.bmi;
importjava.text.DecimalFormat;
importjava.text.NumberFormat;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.RadioButton;
importandroid.widget.Toast;
/*
*@authorling*該程序的功能是用戶選擇自己的性別和輸入自己的身高,然後點擊按鈕,就能在Toast顯示出自己的標准體重
*/
{
/**.*/
privateButtoncountButton;
privateEditTextheighText;
privateRadioButtonmaleBtn,femaleBtn;
Stringsex="";
doubleheight;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//調用創建視圖的函數
creadView();
//調用性別選擇的函數
sexChoose();
//調用Button注冊監聽器的函數
setListener();
}
//響應Button事件的函數
privatevoidsetListener(){
countButton.setOnClickListener(countListner);
}
=newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
Toast.makeText(BMIActivity.this,"你是一位"+sexChoose()+" "
+"你的身高為"+Double.parseDouble(heighText.getText().toString())+"cm"
+" 你的標准體重為"+getWeight(sexChoose(),height)+"kg",Toast.LENGTH_LONG)
.show();
}
};
//性別選擇的函數
privateStringsexChoose(){
if(maleBtn.isChecked()){
sex="男性";
}
elseif(femaleBtn.isChecked()){
sex="女性";
}
returnsex;
}
//創建視圖的函數
publicvoidcreadView(){
//txt=(TextView)findViewById(R.id.txt);
countButton=(Button)findViewById(R.id.btn);
heighText=(EditText)findViewById(R.id.etx);
maleBtn=(RadioButton)findViewById(R.id.male);
femaleBtn=(RadioButton)findViewById(R.id.female);
//txt.setBackgroundResource(R.drawable.bg);
}
//標准體重格式化輸出的函數
privateStringformat(doublenum){
NumberFormatformatter=newDecimalFormat("0.00");
Stringstr=formatter.format(num);
returnstr;
}
//得到標准體重的函數
privateStringgetWeight(Stringsex,doubleheight){
height=Double.parseDouble(heighText.getText().toString());
Stringweight="";
if(sex.equals("男性")){
weight=format((height-80)*0.7);
}
else{
weight=format((height-70)*0.6);
}
returnweight;
}
}

㈦ 安卓怎樣實現計算器累加

輸入該計算公式完成以後按下計算器上的M加號鍵,此時可以看到顯示器上的計算結果。然後再在該計算器上界面中輸入公式240*2。如果沒有其他再次需要計算的公式時,在計算器的鍵盤上按下MR鍵,就可以看到該計算公式的累加結果了。

㈧ android怎麼計算開方

平方根的Math.sqrt(n),求a的b次方Math.pow(a, b)

㈨ Android如何計算時間差

1. 引用如下命名空間:
import java.util.Date;
import android.text.format.DateFormat;
2. 設置時間格式:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
3. 獲取時間:
Date curDate = new Date(System.currentTimeMillis());
//PROCESSING
Date endDate = new Date(System.currentTimeMillis());
long diff = endDate.getTime() - curDate.getTime();
這樣獲取的就是時間間隔了,並且是ms級別的。

熱點內容
編譯有哪兩種模式 發布:2024-04-26 17:53:30 瀏覽:871
伺服器電腦上能用嗎 發布:2024-04-26 17:44:42 瀏覽:559
組件式編程 發布:2024-04-26 17:19:57 瀏覽:942
電子兒童存錢罐如何改密碼 發布:2024-04-26 17:19:13 瀏覽:600
什麼安卓手機直播投屏好 發布:2024-04-26 17:18:31 瀏覽:626
linuxhba查看 發布:2024-04-26 16:57:28 瀏覽:903
啟動mongodb服務linux 發布:2024-04-26 16:38:37 瀏覽:553
525標軸選裝哪些配置 發布:2024-04-26 16:34:24 瀏覽:849
機械硬碟的存儲速度優於固態硬碟 發布:2024-04-26 16:02:13 瀏覽:118
訊捷壓縮器 發布:2024-04-26 16:02:08 瀏覽:269