Smail语法基本知识(三)
来源:互联网 发布:超市会员管理系统源码 编辑:程序博客网 时间:2024/05/29 09:55
------------------------------------------------分割线-------------------------------------------------------------------------------------
虽然关于指令集现在还没有讲,但是可以先看一个例子,加深一下理解。
HelloWorldAppActivity.smail 示例:
.classpublicLcom/cn/daming/activity/HelloWorldAppActivity;
public class HelloWorldAppActivity extends Activity
.superLandroid/app/Activity;
public class HelloWorldAppActivity extends Activity
# instance fields 实例变量
.field privatemTextView:Landroid/widget/TextView;
privateTextView mTextView;
.method public constructor <init>()V 无参构造函数
.locals0 局部变量0个
.prologue ??
.line7
invoke-direct {p0}, Landroid/app/Activity;-><init>()V
return-void
.end method
# virtual methods 非静态方法
.method public onCreate(Landroid/os/Bundle;)V
public void onCreate(Bundle savedInstanceState)
.parameter"savedInstanceState"
public void onCreate(Bundle savedInstanceState)
.line12
invoke-super{p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
super.onCreate(savedInstanceState);
const/high16 v0,0x7f03 将0x7f03放入v0中
R.layout.main
Lcom/cn/daming/activity/HelloWorldAppActivity;->setContentView(I)V
p0代表this,而v0则传递参数R.layout.main的值。
this.setContentView(R.layout.main);
const/high16 v0,0x7f05
R.id.text_view
Lcom/cn/daming/activity/HelloWorldAppActivity;->findViewById(I)Landroid/view/View;
mTextView =(TextView)findViewById(R.id.text_view);
p0代表this,而v0则传递参数R.layout.main的值。
move-result-object v0
将值放入v0
check-cast v0, Landroid/widget/TextView;
类型检查
iput-object v0, p0, Lcom/cn/daming/activity/HelloWorldAppActivity;->mTextView:Landroid/widget/TextView;
iget-object v0, p0, Lcom/cn/daming/activity/HelloWorldAppActivity;->mTextView:Landroid/widget/TextView;
const/high16 v1,0x7f04
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(I)V
.line16return-void
.end method
HelloWorldAppActivity.java 完整示例:
package com.cn.daming.activity;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class HelloWorldAppActivity extends Activity { private TextView mTextView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.text_view); mTextView.setText(R.string.hello); }}
通过对比发现基本的方法名称没有改变,多了一个
.method public constructor <init>()V 表示该类的不带参数缺省的构造方法,
onCreate()方法是以.method publiconCreate(Landroid/os/Bundle;)V 开始,.end method 结束
- Smail语法基本知识(三)
- Smail语法基本知识(一)
- Smail语法基本知识(二)
- smail语法
- smail语法记录
- 【转】smail语法详解
- smail语法 详解
- smail基本语法
- smail文件语法
- smail语法 详解
- smail语法 详解
- smail的语法
- smail语法简析(1)
- smail语法简析(2)
- Android 反编译 smail语法基础
- android 逆向工程 smail 语法学习
- smail语法 <clinit>和<init>的区别
- Android 逆向学习之《Smail语法查询手册》
- Java™ Native Interface (JNI)【读书笔记3:Basic Types, Strings, and Arrays】
- ORACLE B树索引概念的理解
- 数据导入HBase最常用的三种方式及实践分析
- 各类数值型数据之间的混合运算
- php软件系统概述
- Smail语法基本知识(三)
- linux性能分析及调优
- js input框去重复
- 关于Button、RadioGroup、CheckBox三种不同的监听器
- OCP-1Z0-053-200题-70题-647
- android:layout_weight详解
- 获取网站根目录C#
- oracle DBMS作业
- 服装行业如何运作O2O底层变革的?