当前位置:首页 » 安卓系统 » 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-05-06 22:26:41 浏览:143
服务器提供什么服务 发布:2024-05-06 21:45:20 浏览:212
一汽桌面云服务器地址 发布:2024-05-06 21:19:23 浏览:996
北京市社保官网登录密码是什么 发布:2024-05-06 21:19:15 浏览:380
c语言数组的删除 发布:2024-05-06 20:52:33 浏览:398
机械战警用什么配置好看 发布:2024-05-06 20:27:12 浏览:435
win10添加python环境变量 发布:2024-05-06 20:27:12 浏览:313
并联臂算法 发布:2024-05-06 20:02:11 浏览:623
cf跟dnf哪个需求配置高 发布:2024-05-06 20:01:23 浏览:657
什么配置皮筋能打老鼠吗 发布:2024-05-06 19:54:32 浏览:742