Android页面后台

Android页面的后台的代码主要写在java目录文件里如下图

 

Application类贯穿整个程序的生命周期,随着进程的加载对象就创建了,当进程销毁的时候Application类才销毁。在实际开发过程中,可以继承Application类,创建自己的MyApplication类,在类里面可以提供一些变量,数据等等,这些变量与数据在整个生命周期过程中都可以被调用,比如经常要用到的Context,Handler对象可以被当前的Module里的任何类库引用到,而不必在需要用的时候去new对象或者通过构造传入

实现代码:

public classMyAppcliationextendsApplication {

    //在整个应用执行的过程中,需要提供的变量

        public staticContextcontext;//需要使用的上下文对象

        public staticHandlerhandler;//需要使用的Handler

public staticThreadmainThread;//提供主线程对象

public static intmainThreadId;//提供主线程对象的Id

 @Override

public voidonCreate() {

super.onCreate();

context=this.getApplicationContext();

handler=newHandler();

mainThread= Thread.currentThread();//实例化Application当前的线程为主线程

mainThreadId= android.os.Process.myTid();//获取当前线程的Id

   }

}

下面是实现登录界面的后台代码为例:

  1. 首先创建好一个类并继承AppCompatActivity,按Ctrl+O键选择onCreate方

法,然后声明两个全局变量:mActivityContext= this; mActivityContext表

示上下文;myApplication= (MyApplication) getApplication();获取

myApplication实现全局(快捷键:Alt+Enter),方便后面调用。

设置布局:setContentView(R.layout.activity_login);

然后获取界面的控件,获取控件后把所有控件全局化(快捷键:ctrl+alt+f

)。

  1. 如果是主页面则像初始化页面,否则就设置控件事件(方法),接下来就是实现写控件事件的方法:
用上面已经全局化的控件点出setOnClickListener方法,如下:
tvSendSmsCode.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {
      ----这里写想要实现的功能-----
}
}

比如里要写个跳转页面的功能,可以如下:

//意图 参数:context,要打开的页面的类.class

Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);

//打开activity

startActivity(intent);

finish();

如果是想在里面实现获取页面的数据提交到服务段的功能则如下:

1.用已经全局化的控件点出getText()方法,然后判断所获取到数据是否为空。
2. 发送网络请求——获取请求的url——获取设备id——设置参数(实例化一个HashMap对象集合,然后用put方法把数据放进集合里)。
3. 数据、请求路径都准备好之后,接下来就开始发送请求:用httpPost请求方法请求,传入请求路径和数据集合;用onResponse()回调函数。
4. 解析服务端返回数据,用JSONObject对象来反序列化服务段返回来的数据(因为服务端返回的数据是字符串类型的)。详细代码如下:
//文本按钮--获取验证码

tvSendSmsCode.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

        //获取手机号

        String phone=etPhone.getText()==null?"":etPhone.getText().toString();

        if (Tools.isMobile(phone)){

            //======发送网络请求

                       //获取请求的url

            String url= ServiceUrls.getMemberMethodUrl("SendSmsValid");

            //获取设备id

            String deviceId= DeviceUtils.getDeviceUUID(mActivityContext);

            //设置参数

                       Map<String,Object> map=new HashMap<>();

            map.put("phone",phone);

            map.put("deviceId",deviceId);

            map.put("isRegister",false);//登录设置为false

            //禁用发送按钮

                       tvSendSmsCode.setEnabled(false);

            tvSendSmsCode.setText("发送中...");

            //==发送请求

            OkHttpTool.httpPost(url, map, new OkHttpTool.ResponseCallback() {

                @Override

            public void onResponse(final boolean isSuccess, final int      responseCode, final String response, Exception exception) {

                    //更新UI需要在UI线程中执行--只有UI线程才能更新UI

                    mActivityContext.runOnUiThread(new Runnable() {

                        @Override

                        public void run() {

                            String strText="验证码发送失败,请稍后再试";

                            if (isSuccess && responseCode==200){

                                //解析服务端返回数据

                                try {

                            JSONObject jsonObject=new JSONObject(response);

                                    int code=jsonObject.getInt("code");

                                    strText=jsonObject.getString("text");

                                    if (code==200){

                                        //重新发送短信倒计时----Android自带倒计时类 倒计时60s,步长1s

 CountDownTimer timer=new CountDownTimer(60*1000,1000) {

 //每一步的回调

      @Override

   public void onTick(long millisUntilFinished) {

                                                tvSendSmsCode.setText(String.format(Locale.getDefault(),"重新获取(%1$d)",(millisUntilFinished/1000)));

                                            }

 //定时器执行完成的回调

      @Override

   public void onFinish() {

                           tvSendSmsCode.setEnabled(true);

                           tvSendSmsCode.setText("获取验证码");

                                            }

                                        };

                                        //启动定时器

                                        timer.start();

                                    }else{

                                        if (code==501){

                                            etPhone.setError(strText);

                                        }

                                        tvSendSmsCode.setEnabled(true);

                                        tvSendSmsCode.setText("获取验证码");

                                    }

                                } catch (JSONException e) {

                                    e.printStackTrace();

                                }

                            }

         Toast.makeText(mActivityContext,strText,Toast.LENGTH_LONG).show();

                        }

                    });

                }

            });



        }else {

            etPhone.setError("请输入正确的手机号");

        }

    }

});
注意:在客户端和服务端数据传送的参数的大小有区别,因为在客户端里参数的命名规范是:参数所有字母必须是小写,而在服务端里的参数命名规范是:大驼峰命名参数;所以需要在服务端创建实体类来转化参数,详细代码如下:

using Newtonsoft.Json;

 

namespace HotelService.Entity

{

    public class BannerVo

    {

        [JsonProperty("bannerId")]

        public int BannerId { get; set; }

        [JsonProperty("bannerTitle")]

        public string BannerTitle { get; set; }

        [JsonProperty("bannerPicture")]

        public string BannerPicture { get; set; }

        [JsonProperty("bannerLink")]

        public string BannerLink { get; set; }

        [JsonProperty("isShow")]

        public bool? IsShow { get; set; }

        [JsonProperty("isValid")]

        public bool? IsValid { get; set; }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值