《Android编程基础实验报告三(共7页).docx》由会员分享,可在线阅读,更多相关《Android编程基础实验报告三(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上南昌航空大学实验报告 二0一三年一月六日课程名称: 移动终端编程技术 实验名称: Android组件通信和后台服务 班级: 姓名: 同组人: 指导教师评定: 签名: 一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具Eclipse(MyEclipse)+ ADT + SDK;三、实验题目1.编程实现 功能描述:主界面上有一个“登录”按钮,点
2、击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。 编程要点:主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;分别使用显示启动和隐式启动的方式,启动新的Activity;用户名中不能出现“”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“*”,同时只能为数字; 返回的用户名和密码要以Toast的方式显示出来; MainActivity和UserLoginActivity中各个生命周期
3、的回调函数中要以方式显示日志信息。2. 编程实现 功能描述:编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int, Int)函数,输入两个整数,输出较大的整数。 编程要点:主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;分别使用启动方式和绑定方式使用Service;分别使用Handle和AsyncTask更新TextView中的内容。四、 实验步骤1. 详细工程结构及部分代码(显式和隐式都在其中):结果:代码:public
4、class MainActivity extends Activity protected int SUBACTIVITY1 = 1;private static String TAG = MainActivity;Button button1,button2;public void onCreate(Bundle savedInstanceState) (savedInstanceState);setContentView(TAG, (1) onCreate();button1 = (Button) button2 = (Button) (new () public void onClick
5、(View v) Intent intent = new Intent,;(getApplicationContext(), 显示启动, .show();startActivityForResult(intent, SUBACTIVITY1); );(new ()public void onClick(View v) Intent intent = new Intent();(getApplicationContext(), 隐式启动, .show();startActivityForResult(intent, SUBACTIVITY1););protected void onActivit
6、yResult(int requestCode, int resultCode, Intent data) (requestCode, resultCode, data);if (resultCode = RESULT_OK) Uri uriData = ();(getApplicationContext(), (),.show(); else (getApplicationContext(), 用户名和密码为空, .show(); Override oString();String pass=().toString();String uriString=用户名:+name+密码:+pass;
7、 Uri data = (uriString); Intent result = new Intent(null, data); setResult(RESULT_OK, result);finish(););(new () public void onClick(View v) */public static int maxNum;public static Handler handler=new Handler();private static TextView result=null;private static Button compare=null;private static Bu
8、tton reset=null;private static EditText one=null;private static EditText two=null;public static void UpdateGUI(int refreshDouble)maxNum=refreshDouble;(RefreshLable); private static Runnable RefreshLable=new Runnable()public void run() (maxNum); public void onCreate(Bundle savedInstanceState) final B
9、undle mybundle=new Bundle(); (savedInstanceState); setContentView final Intent intent=new Intent,; result=(EditText)findViewById compare=(Button)findViewById reset=(Button)findViewById one=(EditText)findViewById two=(EditText)findViewById (new OnClickListener() public void onClick(View v) (one, ().t
10、oString(); (two, ().toString(); (mybundle); startService(intent); ); (new OnClickListener() public void onClick(View v) (null); (null); (null); ); public class CompareService extends Service private Thread workThread;Bundle bundle=null;int one=0,two=0;public void onCreate() (); workThread = new Thre
11、ad(null,backgroudWork,WorkThread);Overridepublic void onStart(Intent intent, int startId) (intent, startId); bundle=(); String c1=(one); String c2=(two); if(!().equals()&!().equals() one=(c1); two=(c2); if (!() (); public IBinder onBind(Intent intent) return null;private Runnable backgroudWork = new
12、 Runnable()Overridepublic void run() int randomDouble =IntCompare(one,two);(randomDouble);stopSelf();int IntCompare(int a,int b)if(a=b)return a;elsereturn b;(隐式启动) 结果:部分代码:public class MainActivity extends Activity /* Called when the activity is first created. */private boolean isBound = false;priva
13、te CompareService compareService;int a=0,b=0; Override public void onCreate(Bundle savedInstanceState) (savedInstanceState); setContentView final TextView result=(TextView)findViewById Button compare=(Button)findViewById Button reset=(Button)findViewById final EditText one=(EditText)findViewById fin
14、al EditText two=(EditText)findViewById if(!isBound)Intent serviceIntent=new Intent,;bindService(serviceIntent,mConnection,;isBound=true; (new OnClickListener()public void onClick(View v) String c1=().toString();String c2=().toString();if(!()&!()a=(c1);b=(c2);(a, b); ); (new OnClickListener() public
15、void onClick(View v) (null); (null); (null); ); private ServiceConnection mConnection=new ServiceConnection()Overridepublic void onServiceConnected(ComponentName name, IBinder service) etService();Overridepublic void onServiceDisconnected(ComponentName name) / TODO Auto-generated method stubcompareS
16、ervice=null; public class CompareService extends Service private final IBinder mBinder=new LocalBinder();class LocalBinder extends Binder CompareService getService() return ; Overridepublic IBinder onBind(Intent intent) / TODO Auto-generated method stubreturn mBinder;public int IntCompare(int a,int
17、b)if(a=b)return a;elsereturn b;五、 作业1. 简述Intent的定义和用途Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。 2. 简述Service的基本原理和用途Service能够长期在后台运行适用于无需用户干预且规则或长期运行的后台功能。首先因为Service没有用户界面更加有利于降低系统资源的消耗而且Service比Activity具有更高的优先级因此在系统资源紧张时Service不会被Android系统优先终止。即使Service被系统终止在系统资源恢复后Service也将自动恢复运行状态因此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能还可以用于进程间通信Inter Process CommunicationIPC解决不同Android应用程序进程之间的调用和通讯问题。专心-专注-专业
限制150内