内容发布更新时间 : 2024/11/15 10:54:56星期一 下面是文章的全部内容请认真阅读。
南昌航空大学实验报告
二0一三年一月六日
课程名称: 移动终端编程技术 实验名称: Android组件通信和后台服务 班级: 姓名: 同组人: 指导教师评定: 签名:
一、实验目的
了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法; 掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制; 了解Service的原理和用途; 掌握进程内服务的管理方法; 掌握服务的隐式启动和显式启动方法;
二、实验工具
Eclipse(MyEclipse)+ ADT + Android2.2 SDK;
三、实验题目
1.编程实现 ⑴ 功能描述:
主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。
⑵ 编程要点:
①主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;
②分别使用显示启动和隐式启动的方式,启动新的Activity;
③用户名中不能出现“@”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“******”,同时只能为数字;
④ 返回的用户名和密码要以Toast的方式显示出来;
⑤ MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。
2. 编程实现 ⑴ 功能描述:
编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int, Int)函数,输入两个整数,输出较大的整数。
⑵ 编程要点:
①主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;
②分别使用启动方式和绑定方式使用Service;
③分别使用Handle和AsyncTask更新TextView中的内容。
四、 实验步骤
1. 详细工程结构及部分代码(显式和隐式都在其中):
结果:
第 错误!未指定书签。 页 共 13 页
代码:
MainActivity.java
public class MainActivity extends Activity { protected int SUBACTIVITY1 = 1; private static String TAG = \ Button button1,button2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
第 错误!未指定书签。 页 共 13 页
Log.i(TAG, \ button1 = (Button) this.findViewById(R.id.button1); button2 = (Button) 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(intent, SUBACTIVITY1); }}); button2.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { Intent intent = new Intent(\ Toast.makeText(getApplicationContext(), \隐式启动\Toast.LENGTH_SHORT).show(); startActivityForResult(intent, SUBACTIVITY1); }}); } protected 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(getApplicationContext(), \用户名和密码为空\Toast.LENGTH_SHORT) .show(); } } @Override //可视生命周期开始时被调用,对用户界面进行必要的更改 public void onStart() { super.onStart(); Log.i(TAG, \ } @Override //在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息 public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.i(TAG, \ } @Override //在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更
第 错误!未指定书签。 页 共 13 页
新的资源 public void onResume() { super.onResume(); Log.i(TAG, \ } @Override // 在onResume()后被调用,保存界面信息 public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); Log.i(TAG, \ } @Override //在重新进入可视生命周期前被调用,载入界面所需要的更改信息 public void onRestart() { super.onRestart(); Log.i(TAG, \ } @Override //在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。 public void onPause() { super.onPause(); Log.i(TAG, \ } @Override //在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源 public void onStop() { super.onStop(); Log.i(TAG, \ } @Override //在完全生命周期结束时被调用,释放资源,包括线程、数据连接等 public void onDestroy() { super.onDestroy(); Log.i(TAG, \ } }
UserLoginActivity,java
public class UserLoginActivity extends Activity { EditText username,password; Button submit,reset; private static String TAG = \ protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.login); Log.i(TAG, \
第 错误!未指定书签。 页 共 13 页