Android编程基础 实验报告三Word格式.docx
《Android编程基础 实验报告三Word格式.docx》由会员分享,可在线阅读,更多相关《Android编程基础 实验报告三Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。
编程要点:
主界面的Activity命名为MainActivity;
启动新的Activity命名为UserLoginActivity;
分别使用显示启动和隐式启动的方式,启动新的Activity;
用户名中不能出现“@”符号,同时长度不超过12个字符;
密码使用密码文本显示方式,即显示为“******”,同时只能为数字;
返回的用户名和密码要以Toast的方式显示出来;
MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。
2.编程实现
编程建立一个简单的进程内服务,实现比较两个整数大小的功能。
服务提供IntCompare(Int,Int)函数,输入两个整数,输出较大的整数。
提供两个EditText,分别输入两个整数;
提供一个Botton,启动比较过程;
提供一个TextView,显示较大的整数;
分别使用启动方式和绑定方式使用Service;
分别使用Handle和AsyncTask更新TextView中的内容。
四、实验步骤
1.详细工程结构及部分代码(显式和隐式都在其中):
结果:
代码:
MainActivity.java
publicclassMainActivityextendsActivity{
protectedintSUBACTIVITY1=1;
privatestaticStringTAG="
MainActivity"
;
Buttonbutton1,button2;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
Log.i(TAG,"
(1)onCreate()"
);
button1.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
Intentintent=newIntent(MainActivity.this,UserLoginActivity.class);
Toast.makeText(getApplicationContext(),"
显示启动"
Toast.LENGTH_SHORT).show();
startActivityForResult(intent,SUBACTIVITY1);
}});
button2.setOnClickListener(newView.OnClickListener(){
隐式启动"
}
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==RESULT_OK){
UriuriData=data.getData();
Toast.makeText(getApplicationContext(),uriData.toString(),
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"
用户名和密码为空"
Toast.LENGTH_SHORT)
.show();
}
@Override//可视生命周期开始时被调用,对用户界面进行必要的更改
publicvoidonStart(){
super.onStart();
Log.i(TAG,"
(2)onStart()"
@Override//在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息
publicvoidonRestoreInstanceState(BundlesavedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
(3)onRestoreInstanceState()"
@Override//在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更新的资源
publicvoidonResume(){
super.onResume();
(4)onResume()"
@Override//在onResume()后被调用,保存界面信息
publicvoidonSaveInstanceState(BundlesavedInstanceState){
super.onSaveInstanceState(savedInstanceState);
(5)onSaveInstanceState()"
@Override//在重新进入可视生命周期前被调用,载入界面所需要的更改信息
publicvoidonRestart(){
super.onRestart();
(6)onRestart()"
@Override//在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。
publicvoidonPause(){
super.onPause();
(7)onPause()"
@Override//在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源
publicvoidonStop(){
super.onStop();
(8)onStop()"
@Override//在完全生命周期结束时被调用,释放资源,包括线程、数据连接等
publicvoidonDestroy(){
super.onDestroy();
(9)onDestroy()"
}
UserLoginActivity,java
publicclassUserLoginActivityextendsActivity{
EditTextusername,password;
Buttonsubmit,reset;
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
username.setFocusable(true);
username.setOnKeyListener(newOnKeyListener(){
publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){
//TODOAuto-generatedmethodstub
intunicodeChar=event.getUnicodeChar();
if(unicodeChar==64)
{
returntrue;
}
else
returnfalse;
submit.setOnClickListener(newView.OnClickListener(){
Stringname=username.getText().toString();
Stringpass=password.getText().toString();
StringuriString="
用户名:
"
+name+"
密码:
+pass;
Uridata=Uri.parse(uriString);
Intentresult=newIntent(null,data);
setResult(RESULT_OK,result);
finish();
}
});
reset.setOnClickListener(newView.OnClickListener(){
setResult(RESULT_CANCELED,null);
finish();
2.详细工程结构及部分代码(显式和隐式都在其中):
(显式启动)
部分代码:
/**Calledwhentheactivityisfirstcreated.*/
publicstaticintmaxNum;
publicstaticHandlerhandler=newHandler();
privatestaticTextViewresult=null;
privatestaticButtoncompare=null;
privatestaticButtonreset=null;
privatestaticEditTextone=null;
privatestaticEditTexttwo=null;
publicstaticvoidUpdateGUI(intrefreshDouble){
maxNum=refreshDouble;
handler.post(RefreshLable);
}
privatestaticRunnableRefreshLable=newRunnable(){
publicvoidrun(){
result.setText(String.valueOf(maxNum));
}};
finalBundlemybundle=newBundle();
super.onCreate(savedInstanceState);
finalIntentintent=newIntent(MainActivity.this,CompareService.class);
compare.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
mybundle.putString("
one"
one.getText().toString());
mybundle.putString("
two"
two.getText().toString());
intent.putExtras(mybundle);
startService(intent);
});
reset.setOnClickListener(newOnClickListener(){
one.setText(null);
two.setText(null);
result.setText(null);
CompareService.java
publicclassCompareServiceextendsService{
privateThreadworkThread;
Bundlebundle=null;
intone=0,two=0;
publicvoidonCreate(){
super.onCreate();
workThread=newThread(null,backgroudWork,"
WorkThread"
@Override
publicvoidonStart(Intentintent,intstartId){
super.onStart(intent,startId);
bundle=intent.getExtras();
Stringc1=bundle.getString("
Stringc2=bundle.getString("
if(!
c1.toString().equals("
)&
&
!
c2.toString().equals("
)){
one=Integer.parseInt(c1);
two=Integer.parseInt(c2);
if(!
workThread.isAlive()){
workThread.start();
publicIBinderonBind(Intentintent){
returnnull;
privateRunnablebackgroudWork=newRunnable(){
@Override
publicvoidrun(){
intrandomDouble=IntCompare(one,two);
MainActivity.UpdateGUI(randomDouble);
stopSelf();
};
intIntCompare(inta,intb){
if(a>
=b)
returna;
else
returnb;
(隐式启动)结果:
privatebooleanisBound=false;
privateCompareServicecompareService;
inta=0,b=0;
isBound){
IntentserviceIntent=newIntent(MainActivity.this,CompareService.class);
bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE);
isBound=true;
}
Stringc1=one.getText().toString();
Stringc2=two.getText().toString();
if(!
c1.equals("
c2.equals("
a=Integer.parseInt(c1);
b=Integer.parseInt(c2);
result.setText(String.valueOf(compareService.IntCompare(a,b)));
privateServiceConnectionmConnection=newServiceConnection(){
publicvoidonServiceConnected(ComponentNamename,IBinderservice){
//TODOAuto-generatedmethodstub
compareService=((CompareService.LocalBinder)service).getService();
publicvoidonServiceDisconnected(ComponentNamename){
compareService=null;
CompareService.java
privatefinalIBindermBinder=newLocalBinder();
classLocalBinderextendsBinder{
CompareServicegetService(){
returnCompareService.this;
publicIBinderonBind(Intent