点单代码android - CSDN
  • 单点登录指的是同一个账户(id)不能在一个以上的设备上登录对应的用户系统(排除web端和移动端可以同时登录的情况),例如:用户m在A设备登录并保持登录状态,然后又在B设备登录,此时A应该要强制下线,m无法在A设备上继续...

    单点登录指的是同一个账户(id)不能在一个以上的设备上登录对应的用户系统(排除web端和移动端可以同时登录的情况),例如:用户m在A设备登录并保持登录状态,然后又在B设备登录,此时A应该要强制下线,m无法在A设备上继续执行用户相关的操作

    服务端

    服务端需要集成Token,每次在app登录时为app分配新的token,如果在某次http请求中app传递token不是最新的,则视为需要重新登录(或者根据自己需要后台设定token有效时间,过期视为Token失效,需要重新登录).在token失效的情况下,返回约定好的code

    Android端监听

    App如何知道已经在其他设备登录了呢,一般可以有三种方式

    1.api请求中后台返回特定code

    这种是最常见的方式,缺点是需要下次api请求才知道被踢下线,可以在网络层实体模型的基类BaseModel中处理,对code进行判断

            switch (code) {
            case 1:
                break;
            case 3://被踢下线
                //Do Something
                break;
            }
    

    2.推送

    后台推送给app,从而app得知该账户在其他设备登录了,进而执行下线操作,优点是可以及时响应

    3.使用第三方的监听器

    很多时候app会集成一些第三方的账户系统,例如在集成了环信的app中,每个用户对应一个环信的imUserName,环信自身有提供连接状态的接听,通过监听环信的用户状态,从而达到监听app自身用户系统的效果

            EMClient.getInstance().addConnectionListener(this);
    

    Android被踢下线后的操作

    不管是哪种监听方式,最后的操作都是一样的,可以根据自己的需求进行对应的操作.这里提供一种常规化的下线流程.

    • 从栈顶取到当前的前台Activity,Dialog提示用户,点击后跳转登录页

    Screenshot_2016-08-31-17-18-33.png

    首先,任意地方获取到前台Activity

    public Activity getTaskTop() {
        return mActivities.get(mActivities.size() - 1);
    }
    

    然后在主线程弹出dialog

    private void onConnectionConflict() {//被踢下线处理
        SPUtils.logout();
        final Activity taskTop = ActivityManager.getInstance().getTaskTop();
        if (taskTop == null) return;
        new Handler(Looper.getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                MDdialogFactory.CreateMustOkDia(taskTop, "您的账号已在其他终端登录,请重新登录", new MDCallBack() {
                    @Override
                    public void onMdCall(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        Intent intent = new Intent(taskTop, LoginActivity.class);
                        intent.putExtra(ConstantKey.MUST_LOGIN_KEY, true);
                        taskTop.startActivity(intent);
                    }
                }).show();
            }
        });
    }
    

    这里做一些说明

    • 由于监听到被踢下线的环境不一定在主线程,所以需要切换到主线程进行弹出Dilaog

      new Handler(Looper.getMainLooper()).post(Runnable r)
      
    • 这里的dialog是强制的,取消不了(这里dialog是自定义的,用系统的也是可以的,这不是重点)

      builder.cancelable(false);
      builder.canceledOnTouchOutside(false);
      
    展开全文
  • 第一次下载好Android代码工程后,我们通常是在Android代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android代码中的某个模块或者在Android源...

          第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。

    《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0xcd.com)中连载,点击进入!

          一. 首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:

          USER-NAME@MACHINE-NAME:~/Android$ .  ./build/envsetup.sh

          注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:

          - croot: Changes directory to the top of the tree.

          - m: Makes from the top of the tree.
          - mm: Builds all of the modules in the current directory.
          - mmm: Builds all of the modules in the supplied directories.
          - cgrep: Greps on all local C/C++ files.
          - jgrep: Greps on all local Java files.
          - resgrep: Greps on all local res/*.xml files.
          - godir: Go to the directory containing a file.
          这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。
          二. 使用mmm命令来编译指定的模块,例如Email应用程序:
          USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/
          编译完成之后,就可以在out/target/product/generic/system/app目录下看到Email.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/product/generic/system/bin目录下,动态链接库文件放在out/target/product/generic/system/lib目录下,out/target/product/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件,后面的文章里面,我们会陆续提及到,敬请关注。
          三. 编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。
          USER-NAME@MACHINE-NAME:~/Android$ make snod
          四. 参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:
          USER-NAME@MACHINE-NAME:~/Android$ emulator
          这样一切就搞定了。
    老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!
    展开全文
  • 在用Eclipse时候,你可以进行设置,设置成不管你输入任何字母,都能进行代码的提示,在Android Studio中也可以 设置,而且比Eclipse设置来的简单。当然如果你觉得代码自动提示会降低你的代码水平,你也可以不设置,...

    在用Eclipse时候,你可以进行设置,设置成不管你输入任何字母,都能进行代码的提示,在Android Studio中也可以

    设置,而且比Eclipse设置来的简单。当然如果你觉得代码自动提示会降低你的代码水平,你也可以不设置,在写代码

    过程中,如果一时忘记了,你就可以用代码提示的快捷键。android studio代码提示的快捷键是什么呢?看这篇文章:

    【Android Studio快捷键】之代码提示

    接下来说如何设置代码自动提示,如图:

    图上内容比较多,我直接按区域划分成6块区域来说吧:


    区域1:这个选项是关于提示的时候如何进行匹配,即按照什么条件来进行提示内容的搜索。

         All:选择这个的话,意思就是要和你输入的字符进行全匹配,能全匹配起来的字符才会显示在提示列表中,如下图,其实就相当于精确搜索:


         None:选择这项的话,意思是进行模糊匹配,我直接上图吧,大家看图就明白了:


         First Letter:即是根据首字母进行匹配,不过这里面感觉还是有bug,选择First Letter时,匹配的结果和all类似,又比all少。这块个人感觉是Android Studio可能没有做完善。

        如果不想这么麻烦,那就不用管这三项到底咋回事,直接选all吧,反正这块就一个提示匹配的方式,不关心也罢。

    区域2:这块区域其实是和代码提示快捷键有关系的,意思是假设我没有设置弹出自动提示框,在你输入内容时,这个时候你按下了代码提示的快捷键,如果匹配到的提示内容只有一项,那么是否要自动补全。

    区域3:这块是关于自动代码提示列表的排序规则,排序有两种方式, lexical和relevance,你点上图中右下角的π就能进行选择排序的顺序,不用关心吧,个人觉得用处不大。

    区域4:这个选项是个很重要的选项,意思是是否弹出代码自动补全提示框,其实就是本文的核心,设置代码自动提示只要把这个勾打上就好了。第二个选项:Insert selected...ect.这个选项的意思是如果你选中了提示列表中的某项,然后通过空格键,或者点(.)等键可以直接进行补全(其实吧就是把其他键当回车使,按下后,就直接补全为你选中的代码)

    区域5:这项是值是否自动弹出关于你选中的补全项的文档,说得直白点,就是对你选中的补全代码的一个说明,比如参数的说明,补全代码功能的说明。不过我打勾了也没出来,不知道是不是我操作的问题,不过估计也是Android Studio的bug。因为使用AS至今,发现很多选项是没有效果的。

    区域6:这个区域是关于弹出框中方法名称或者参数返回值一些显示的定义,不过这个个人感觉也是有bug的,选跟不选效果一个样。不用关心。

    展开全文
  • 其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下什么。既然没能写出什么出色的应用,那至少也要留下文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里...

    书中源码下载地址:http://download.csdn.net/detail/sinyu890807/7747691


    前言


    其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下点什么。既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里受惠了很多。


    受邀


    下定决心之后我就开始了我的博客之旅,令我没想到的是,我写的文章竟然非常受大家的欢迎,短时间内就聚集了大量的人气。更令我没想到的事,在我开始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰老师就联系上了我,希望我可以写一本关于Android开发技术的书籍!


    陈冰,第一次听到这个名字的时候相信大家和我一样都不会感到熟悉,但是当他告诉我,他之前一手策划过《大话设计模式》这本书时,我立刻冲向了我的书柜并找到它,翻开扉页后赫然就在责任编辑那一栏看到了陈冰的名字,往后翻还可以看到他为《大话设计模式》写的序。这时我的心里只有一个念头,他邀请我写的这本书我是无论如何都拒绝不了了!


    创作


    接下来我就开始构思如何去完成这本书了。创作的过程注定是艰辛的,虽然我已经有了一些写博客的经验,但写书着实还是头一回,而写书又和写博客有着很大的差距。博客的内容可以比较散乱,想到哪里写到哪里,但书的内容一定要系统化,讲究循序渐进,基本上在写第1章的时候就应该把全书的内容都确定下来了。


    正所谓万事开头难,因此我首先是花了大约两个星期的时间制定了这本书的目录,这也就成为了我后面的写作大纲。陈冰告诉我,如果可以把目录制定出来,那么基本上就已经完成80%的工作了,然而事实证明,即使制定出了目录,事情也远远没有想象中的那么简单。我毕竟无法全身心地投入到写书当中,因为每天还要上班工作,有时还要加班,我只能在下班了之后再开始整理自己的思绪,然后动笔。另外,我之前对写书这件事算是严格保密的,并没有在博客上进行过任何透漏,因此我无法因为这个原因而停止更新博客,仍然坚持着每周或两周一篇的节奏。


    就这样在工作、博客和写书之间制衡着,虽然很辛苦,但我并没有落下任何一项。工作依旧相当出色,博客的质量大家有目共睹,而书怎么样大家拿到手之后就知道了。我创作的那段时间大概是保持着每月两章的进度,包括春节假期的那段时间也写个不停,最终在今年的3月份完全终稿,刚好赶上了截稿日期。到这里我的工作就已经基本完成了,后面的任务开始由出版社接手,他们审核、校对、排版、设计封面、印刷,终于在7月份的下旬开始预售了,一年的辛苦即将可以看到成果,我也表示非常期待。


    比较


    叙述完了创作的过程,接下来我们还是看一看这本书吧。这本书叫作《第一行代码——Android》,从名字上就可以看出来,这是一本非常适合初学者的书籍,我特别想写这样的一本书,因为它可以和我的博客相辅相成。由于我写博客的时间比较晚,13年才开始写的,当时很多Android技术相关的内容都已经被人写过了,重复再写一遍别人写过的东西显然太没创意,因此我给自己的博客定了一个主题,那就是只写比较高级的应用技术。可是博客的主题虽然非常鲜明,却明显不太适合初学者的朋友们阅读,从众多的评论当中我也能看出,有不少朋友的基本功还是不够扎实的,如果能结合一本介绍基础的书来巩固基本功,那你就真的变得无懈可击了,因此《第一行代码——Android》应运而生。


    下面我来对博客和书中的内容做个简要的对比吧,让大家心里有个数。

    • 博客更加倾向于介绍Android高级技巧,而书中则是基础、进阶、实用技巧都有。
    • 阅读博客时你需要有相当不错的Android基础,而阅读书时你不需要有任何的Android基础。
    • 博客中的内容相对比较散乱,而书中的内容更加系统化、科学化(这个是必然现象,一个是想到哪儿写到哪儿,一个是精心策划出来的)。
    • 出于对读者的尊重,我不会简单地将博客里的内容复制到书里,而出于对版权的保护,我也不会把书里的内容在博客上发表。因此,书和博客的内容基本不会有交集,这样买书的朋友们不会有种买了本纸质版博客的感觉。


    特色


    当然了,这本书还是有很多独有特色的,不然的话就和市场上的其它书没什么区别了。你不需要有任何Android基础就可以阅读它,但它会带领你一步步深入了解Android的各项功能。其中有不少章节我认为是非常出彩的,比如说第二章对Activity启动模式的讲解非常细致,市场上多数同类书中都没有这部分内容的,第七章对ContentProvider的讲解也相当到位,相信可以满足不少朋友的求知欲望。再比如说大部分章节的最后都会附有一个最佳实践部分,其中很多的技巧都是我日常工作中总结出来的,对你来说一定也很适用。再比如说,书中会对Git的用法进行穿插讲解,并教你如何将代码托管到GitHub,如何将软件上架到Google Play,如何在软件中嵌入广告盈利等等等等,我就不一一举出了,等待你自己去发现。


    另外,为了让这本书读起来不会枯燥,我努力让自己的语言变得幽默,可毕竟在这方面不怎么擅长,做得不够好。但本书中引入的经验值、升级、宝物系统则很好地弥补了这一点,通过不断地阅读,你将会获得经验值、升级,并赢得匪夷所思的宝物,让你在阅读过程体会到更多的乐趣。这个系统是由陈冰写的,如果大家阅读之后对这个系统有什么反馈或建议,可以发送邮件给他(neosaga@126.com)。


    很多朋友私下里有问过我,应该怎样去学习Android才能有所提高,那么今天我可以给出答案了。书和博客结合在一起学习,建议先看书打牢基础,然后再看博客进行进阶,当你把书和博客中的内容都吃透了的时候,那么我会的东西你也就都会了。


    封面


    看到了这里,相信有些朋友已经迫不及待想要购买一本了吧?别着急,我们再来看一下这本书的封面。封面的设计不是由我负责的,但诞生的过程也算是经历了各种曲折。陈冰对封面的要求非常苛刻,既要有深度有含义,又要能吸引眼球,还要给人一种想要翻开的冲动。经过了两个月左右的设计,所谓的“本年度最佳封面终于出炉了”,我们来欣赏一下:




    红色作为亮色系的代表色,使得它可以在众多图书当中脱颖而出,让人一眼就能看见它。


    再来看一下宣传海报的样子:




    怎么样,有没有一种视觉震撼的感觉?!虽然最终的封面夺人眼球,但任何东西都不会是凭空出现的,创作的过程必然有它的艰辛和曲折,《第一行代码——Android》封面诞生记这篇文章中专门讲述了本书封面的诞生过程,感兴趣的朋友可以像看故事一样去了解了解。


    定价


    79元,看到这个价格时我相信很多朋友觉得并不便宜,但实际上这已经是我尽最大可能争取到的价格了。由于书的价格是由出版社根据页数来制定的,我并不能做过多干预。通常情况下五百多页的书都可以定价到八十几、九十几元,最低也不能低于79元,于是我果断申请了最低的价格。


    其实换一种思路来想,79元也不算贵,因为这只是书的原售价,而我们在网上买书的话通常都会打折,基本上也就只需要五十多块钱就可以买到了。另外我觉得买书不用太在意价格,而是应该更在意里面的内容,书的内容只要能够真正给你带来帮助,那么它的价值就是远远大于这几十块钱的(就我自己而言,我大学期间总共大概花了两千多块的生活费用于买书,这些书一直都珍藏在我的书架上,是我永久的财富)。


    购买


    了解了这么多,不知道你有没有下定决心要买一本呢?目前《第一行代码——Android》这本书已经在当当、京东、亚马逊、互动这几个网上书店上架了,有需要的小伙伴们请猛戳下面的地址:


    当当网购买地址

    京东购买地址

    亚马逊购买地址

    互动出版购买地址

    天猫购买地址


    然后


    书的出版算是我的程序之路上一个新的里程碑吧,然而人生的路还很长,未来仍然需要努力向前。因此,我后面还是会一如既往地坚持更新博客,自我提升的同时也分享给大家。因为博客的原因,我结识了很多天南海北的新朋友,感谢众多朋友以及亲人的一路陪伴,愿未来大家都能天天向上。


    书中源码下载地址:http://download.csdn.net/detail/sinyu890807/7747691


    关注我的技术公众号,每天都有优质技术文章推送。关注我的娱乐公众号,工作、学习累了的时候放松一下自己。

    微信扫一扫下方二维码即可关注:

            

    展开全文
  • Android 混淆代码总结

    2015-05-25 09:21:50
    Android 混淆代码总结
  • 自从google大力推出android studio开发android IDE工具之后,最近大家都切换到android studio。但是切换过来之后,各种不顺手。快捷键就是一个大问题!本来在eclipse中用的好好的快捷键,愣是不顺手了!怎么办呢?...
  • Android代码分享

    2016-08-17 09:07:08
    Android 超过2个G的源代码集合~~各种功能实现,应有尽有~~云盘地址:http://yunpan.cn/cQbKArfxFniuS (提取码:f930) Android 好用的源码 Android 酷炫源码
  • 看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android代码了呢?一直习惯使用Windows系统,而Android代码是不支持在Windows上编译上,于是...
  • 下面是我创建计算器项目的代码目录结构: 下面分享的是activity_main.xml中的源代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro
  • 想必使用过Eclipse的小伙伴们都习惯Eclipse快捷键带来的方便,但是当我们使用Android studio来进行开发的时候也想要这种方便该怎么办呢,当然使用过Android studio的小伙伴可能已经知道了它的方便以及强大之处,接下来...
  • Android 项目的代码混淆,Android proguard 使用说明
  • 一、简介 ... Android Studio 代码提示功能很强大,大部分的类、变量、方法都可以通过部分单词或者单词首字母快捷输出,这个大家使用中都可以感觉到,而且它会记忆你常用的方法优先提示,所以...
  • android开发之单点触摸

    2015-05-15 20:14:02
    相对于多点触摸,单点触摸还是很简单的。 新建一个工程,先看看布局文件:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ...
  • 通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 源码如下(欢迎大家指导 批评 ) package com.android.xiong.gridlayoutTest; import java.math.BigDecimal; import java.util.regex.Pattern;...
  • 一、Android studio制作计算器源代码 这是我学Android 以来第一次制作计算器,Android学起来说难也不难,说简单也不简单 制作简易的计算器需要掌握基本布局,监听器,以及使用哪些主题等 废话不多说,直接上代码...
  • 什么是 LintLint 是Android Studio 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例。Lint 发现的每个问题都有描述信
  • Android应用开发--MP3音乐播放器代码实现(一) 需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1. 从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2. 迭代List集合,...
  • Android开发又是大多应用层面的开发,很多都是和视图层紧密相连的,业务逻辑和view相绑定,这导致编写单元测试有相当大的困难,因此就我项目而言,只针对工具类、服务端API编写单元测试。关于Android Studio如何...
  • 在对使用的Android studio对Android的项目进行开发的中,在Android代码的编辑器中需要进行添加注释的信息,那么就只能通过在代码的编辑器中进行添加注释之后,就可以进行对代码中进行注释的信息,这样也不会影响到...
  • 在进行UI布局的时候,可能经常会用到 android:gravity 和 android:layout_Gravity 这两个属性。 关于这两个属性的区别,网上已经有很多人进行了说明,这边再简单说一下。 (资料来自网络) LinearLayout有两个非常...
1 2 3 4 5 ... 20
收藏数 1,147,005
精华内容 458,802
热门标签
关键字:

点单代码android