Android编程基础-实验报告三_第1页
Android编程基础-实验报告三_第2页
Android编程基础-实验报告三_第3页
Android编程基础-实验报告三_第4页
Android编程基础-实验报告三_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南昌航空大学实验报告二0一三年一月六日课程名称:移动终端编程技术实验名称:Android组件通信和后台服务班级:: 同组人:指导教师评定: 签名:一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法; 掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具EclipseMyEclipse+ ADT + Android2.2 SDK;三、实验题目1.编程实现(1)功能描述:主界面上有一个 登录”按钮,点击登录”按钮后打开一个

2、新的 Activity ;新 的Activity上面有输入用户名和密码的控件,在用户关闭这个 Activity后,将用 户输入的用户名和密码传递到主界面中。编程要点:主界面的 Activity 命名为 MainActivity ;启动新 的 Activity 命名为 UserLoginActivity ;分别使用显示启动和隐式启动的方式,启动新的Activity ;用户名中不能出现“ ”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“ * ”,同时只能为数字; 返回的用户名和密码要以Toast的方式显示出来; MainActivity 和 UserLoginActivity

3、 中各个生命周期的回调函数中要以 Log.i方式显示日志信息。2.编程实现(1)功能描述:编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供 IntCompare(Int, Int)函数,输入两个整数,输出较大的整数。编程要点:主界面的Activity命名为MainActivity ;提供两个EditText,分别输入两个 整数;提供一个Botton,启动比较过程;提供一个 TextView,显示较大的整数;分别使用启动方式和绑定方式使用 Service;分别使用 Handle和AsyncTask更新TextView中的内容。四、实验步骤1 .详细工程结构及部分代码显式和隐式都

4、在其中Lab3_l_intent6 BFC士 rn.te5t. n<huj,l MainActivity.java|J'| U5e-rLoginActivrtyjava J Lf layout login.xmlCl ma in.xml» valueriCi strings,xml,1 An droid M a rr«t.)ciTil结果:Intent乐式苜录施式苜录代码:MainActivity.javapublic class MainActivity extends Activity protected int SUBACTIVITY1 = 1;priv

5、ate static String TAG = "MainActivity"Button button1,button2;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);学习文档仅供参考Log.i(TAG , "(1) onCreate()");button1 = (Button) this.findViewById(R.id.button1);button2 = (Button

6、) this.findViewById(R.id.button2);button1.setOnClickListener(new View.OnClickListener() public void onClick(View v) Intent intent = new Intent(MainActivity.this,UserLoginActivity.class);Toast.makeText(getApplicationContext(), " 显示启动 ", Toast.LENGTH_SHORT).show();startActivityForResult(inte

7、nt, SUBACTIVITY1););button2.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent("com.example.test");Toast.makeText(getApplicationContext(), " 隐式启动 ", Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1););protecte

8、d void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data);if (resultCode = RESULT_OK) Uri uriData = data.getData();Toast.makeText(getApplicationContext(), uriData.toString(), Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicat

9、ionContext(), " 用户名和密码为空",Toast.LENGTH_SHORT).show();Override /可视生命周期开始时被调用,对用户界面进行必要的更改public void onStart() super.onStart();Log.i(TAG , "(2) onStart()");Override /在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面 信息public void onRestoreInstanceState(Bundle savedInstanceState) sup

10、er.onRestoreInstanceState(savedInstanceState);Log.i(TAG , "(3) onRestoreInstanceState()");Override 在活动生命周期开始时被调用,恢复被onPause()f亭止的用于界面更新的资源public void onResume() super.onResume();Log.i(TAG , "(4) onResume()");Override /在onResume()后被调用,保存界面信息public void onSaveInstanceState(Bundle s

11、avedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG , "(5) onSaveInstanceState()");Override/在重新进入可视生命周期前被调用,载入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG , "(6) onRestart()");Override/在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。public void onPause() s

12、uper.onPause();Log.i(TAG , "(7) onPause()");Override / 在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源public void onStop() super.onStop();Log.i(TAG , "(8) onStop()");Override / 在完全生命周期结束时被调用,释放资源,包括线程、数据连接等public void onDestroy() super.onDestroy();Log.i(TAG , "(9) onDestroy()");UserL

13、oginActivity,javapublic class UserLoginActivity extends Activity EditText username,password;Button submit,reset;private static String TAG = "MainActivity"protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.

14、layout.login);Log.i(TAG , "(1) onCreate()");username=(EditText)this.findViewById(R.id.username);password=(EditText)this.findViewById(R.id.password);submit=(Button)this.findViewById(R.id.submit);reset=(Button)this.findViewById(R.id.reset);username.setFocusable(true);username.setOnKeyListene

15、r(new OnKeyListener()public boolean onKey(View v, int keyCode, KeyEvent event) / TODO Auto-generated method stubint unicodeChar = event.getUnicodeChar();if(unicodeChar= 64)return true;elsereturn false;);submit.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-gene

16、rated method stubString name =username.getText().toString();String pass=password.getText().toString();String uriString=" 用户名: "+name+" 密码: "+pass;Uri data = Uri.parse(uriString);Intent result = new Intent(null, data);setResult(RESULT_OK, result);finish(););reset.setOnClickListene

17、r(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubsetResult(RESULT_CANCELED, null);finish(););Override /可视生命周期开始时被调用,对用户界面进行必要的更改public void onStart() super.onStart();Log.i(TAG , "(2) onStart()");Override /在onStart()后被调用,用于恢复onSaveInstanceState()保存的用

18、户界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG , "(3) onRestoreInstanceState()");Override在活动生命周期开始时被调用,恢复被onPause()f亭止的用于界面更新的资源public void onResume() super.onResume();Log.i(TAG , "(4) onResume()");Ove

19、rride /在onResume()后被调用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG , "(5) onSaveInstanceState()");Override/在重新进入可视生命周期前被调用,载入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG , "(6) onRestart()&qu

20、ot;);Override/在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。public void onPause() super.onPause();Log.i(TAG , "(7) onPause()");Override / 在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源public void onStop() super.onStop();Log.i(TAG , "(8) onStop()");Override / 在完全生命周期结束时被调用,释放资源,包括线程、数据连接等public void onDestr

21、oy() super.onDestroy();Log.i(TAG , "(9) onDestroy()");2. 详细工程结构及部分代码显式和隐式都在其中 :( 显式启动 )学习文档 仅供参考 1号 Lab3 2 Service 彦 src 由 crT*nchu,edUd5e-rvi ceJ ComreSerYicejevaJ| MainAdivityjayaj .> layoutp main.xml & valuesCl strings,xnril三 ArrdroidMarifest.xml结果:部分代码:MainActivity.javapublic cl

22、ass MainActivity extends Activity /* Called when the activity is first created. */public static int maxNum;public static Handler handler=new Handler。;private static TextView result=null;private static Button compare=null;private static Button reset=null;private static EditText one=null;private stati

23、c EditText two=null;public static void UpdateGUI(int refreshDouble)maxNum=refreshDouble;handler.post(RefreshLable);private static Runnable RefreshLable=new Runnable() public void run() result.setText(String.valueOf(maxNum);public void onCreate(Bundle savedInstanceState) final Bundle mybundle=new Bun

24、dle(); super.onCreate(savedInstanceState);setContentView(R.layout.main);final Intent intent=new Intent(MainActivity.this,CompareService.class); result=(EditText)findViewById(R.id.result);compare=(Button)findViewById(R.id pare);reset=(Button)findViewById(R.id.reset); one=(EditText)findViewById(R.id.o

25、ne); two=(EditText)findViewById(R.id.two);compare.setOnClickListener(new OnClickListener() public void onClick(View v) mybundle.putString("one", one.getText().toString(); mybundle.putString("two", two.getText().toString();intent.putExtras(mybundle); startService(intent););reset.s

26、etOnClickListener(new OnClickListener() public void onClick(View v) one.setText(null); two.setText(null); result.setText(null); );CompareService.javapublic class CompareService extends Service private Thread workThread;Bundle bundle=null;int one=0,two=0;public void onCreate() super.onCreate();workTh

27、read = new Thread(null,backgroudWork,"WorkThread");Overridepublic void onStart(Intent intent, int startId) super.onStart(intent, startId);bundle=intent.getExtras();String c1=bundle.getString("one");String c2=bundle.getString("two");if(!c1.toString().equals("")

28、&&!c2.toString().equals("")one=Integer.parseInt(c1);two=Integer.parseInt(c2);if (!workThread.isAlive() workThread.start();public IBinder onBind(Intent intent) return null;private Runnable backgroudWork = new Runnable()Overridepublic void run() int randomDouble =IntCompare(one,two);

29、MainActivity.UpdateGUI(randomDouble); stopSelf();int IntCompare(int a,int b) if(a>=b) return a;elsereturn b;(隐式启动)/La b3_2_B i nd Servi c a & src/田 .nchu. EindServiceJ Compar&Servicejava MainArtivit.jaivaJ r-layoutmain>xmlJ & values string e xml乱 ndrcidManifest.xml部分代码:MainAc

30、tivity.javapublic class MainActivity extends Activity 结果:/* Called when the activity is first created. */ private boolean isBound = false;private CompareService compareService;int a=0,b=0;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layo

31、ut.main);final TextView result=(TextView)findViewById(R.id.result);Button compare=(Button)findViewById(R.id pare);Button reset=(Button)findViewById(R.id.reset);final EditText one=(EditText)findViewById(R.id.one);final EditText two=(EditText)findViewById(R.id.two);if(!isBound)Intent serviceIntent=new

32、 Intent(MainActivity.this,CompareService.class); bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE); isBound=true;compare.setOnClickListener(new OnClickListener() public void onClick(View v) String c1=one.getText().toString();String c2=two.getText().toString();if(!c1.equals(""

33、)&&!c2.equals("")a=Integer.parseInt(c1);b=Integer.parseInt(c2);result.setText(String.valueOf(compareService.IntCompare(a, b););reset.setOnClickListener(new OnClickListener()public void onClick(View v) one.setText(null);two.setText(null);result.setText(null););private ServiceConnection mConnection=new ServiceConnection() Overridepublic void onServiceConnected(ComponentName name, IBinder service) / TODO Auto-generated method stubcompareServi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论