sp项目小知识点(一)

一、创建shortcut(桌面快捷方式)


二、使用WeakReferenceHandler来避免内存泄露

private static class MyHandler extends WeakReferenceHandler<WelcomeActivity> {
        public MyHandler(WelcomeActivity reference) {
            super(reference);
        }

        @Override
        protected void handleMessage(WelcomeActivity reference, Message msg) {
            Intent intent = new Intent(reference, LoginActivity.class);
            reference.startActivity(intent);
            reference.finish();
        }
    }

三、在layout布局文件中使用<include/>标签引用之前写好的布局,使用<ScrollView/>做屏幕适配,并且在<ScrollView/>中fillViewPort标签元素的使用(使得ScrollView中的布局可以撑满ScrollView)

四、Activity的生命周期和onNewIntent方法的使用

前提:ActivityA已经启动过,处于当前应用的Activity堆栈中;

当ActivityA的LaunchMode为SingleTop时,如果ActivityA在栈顶,且现在要再启动ActivityA,这时会调用onNewIntent()方法

当ActivityA的LaunchMode为SingleInstance,SingleTask时,如果已经ActivityA已经在堆栈中,那么此时会调用onNewIntent()方法

当ActivityA的LaunchMode为Standard时,由于每次启动ActivityA都是启动新的实例,和原来启动的没关系,所以不会调用原来ActivityA的onNewIntent方法

五、系统InputMethodManager的使用,使得用户输入完之后,登陆时,先对软键盘做出一些操作(比如 隐藏 软键盘 等等)

六、ProgressBar的setIndeterminate(boolean indeteminate)方法的作用

true:根据现在任务的进度可以设置进度值;

false:进度在最小和最大之间滚动,但是不清楚现在的进度情况,亦不能设置当前任务的进行的进度值。

七、ProgressDialog

八、Serialiazation序列化对象保存

将某类的对象转化成字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。

九、APP整体构架分析

1、网络访问框架的书写:

使用AnsyncTask异步处理框架访问网络

1.1      BaseAsyncTask

 @Override
    protected void onCancelled() {
        if (progressBar != null && progressBar.isShowing()) {
            progressBar.dismiss();
        }
    }

    @Override
    protected void onPostExecute(Result result) {
        super.onPostExecute(result);
        if (progressBar != null && progressBar.isShowing()) {
            progressBar.dismiss();
        }
    }

    @Override
    protected void onPreExecute() {
        if (!TextUtils.isEmpty(noticeMsg)) {
            progressBar = new SpmProgressBar(context);
        }
    }
这样,在任务处理之前,new出来一个自定义的SpmProgressbar;在任务处理完成之后,提示ThreadUI去讲新建出来的SpmProgressbar的对象progressBar消除(dismiass)掉。

1.2  MPosResultAsyncTask  extends BaseAsyncTask

用于处理网络访问结果的框架

我们需要一个封装了访问网络得到的一个封装了该次访问所返回的结果的Bean,并使用这样的Bean去具体封装访问网络的结果,根据这样的一个Bean的对象去具体操作应该要像是的界面。

 @Override
    protected void onPostExecute(MPosResult result) {
        super.onPostExecute(result);
        if (result == null) {
            MPosResult mResult = new MPosResult();
            mResult.setErrorCode("-999");
            mResult.setErrorMsg("网络异常");
            onFailResult(mResult);
            return;
        }

        MLog.i("MPosResultAsyncTask", "result:" + result, null);

        if (result.isResult()) {
            onSuccessResult(result);
        } else {
            onFailResult(result);
        }
    }

    protected void onSuccessResult(MPosResult result) {

    }

    protected void onFailResult(MPosResult result) {

    }
以上的onSuccessResult和onFailResult方法我们可以交给子类具体去实现。(可以的话,可以将该类用abstract去修饰,方便子类明了的去实现需要实现的方法)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值