徐松亮android教学-杂项笔记

版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603

推荐点击此链接:欢迎进入徐松亮博客一站式导航搜索(随时更新)


既然叫杂项笔记,就是说杂乱无章的笔记,此笔记的主要目的不是为了教学,而是用于本人学习过程中的点滴记录,之所以开放,就是希望能给新手及爱好者些许点滴概念性帮助。


目录

1,开发环境搭建:

2,模拟器:Genymotion

3,手机开启开发模式

4, APK

5,反编译工具:

6,Android Studio编译C/C++

7,官方文档:

8,SDK包说明:

9,Android尺寸

 单位

 手机分辨率

10,Android体系结构:分为如下5层

​11,Android studio主题(霸气黑主题)

12,Android Studio显示行号

13,Android studio常用快捷键

14,Android studio配置SDK与JDK路径

15,Android Studio的Project与Module概念

16, Android Studio的操作面板

17,Android Studio的Project文件列表说明

18,Android 的Activity模板

19,Android 的静态分析工具Android StudioLint

20,Android Studio自动升级后项目卡在Gradle sync的解决方案

21,常用文件类型

22,基本属性

23,注释

24,控件的触发

25,将原有的eclipse工程文件加载到Android studio

26,Android屏幕元素层次结构

27,Android的主题

28,Android创建UI的3种方式

29,Android常用控件

30,关于R类

31,关于this

32,Android的两种事件处理机制

33,Android的4大组件

Activites

Service                    

Broadcast Receivers

ContentProviders        

组件间通讯(Intents框架)

34,Activity与Fragment(碎片)

35,Android调试信息打印---Log方法

36,Android消息提示框---Toast

37,Android对话框---AlertDialog

38,Android通知---Notofication

39,Android异常

40,Android的数据存储

SQLite

SharedPreference

ContentProvider

File

41,Android的回收

WeakReference    

SoftReference    

42,网络通讯

使用HttpURLConnection访问网络

使用HttpClient访问网络

43,更新UI

44,进入Shell

45,问题解答(未完待续)

怎么能让程序持续运行

华为手机进入工厂设置(开启LOG)的神秘代码

Thread/Looper/Handler/Message/Intent

怎么能让程序持续运行

怎么能让程序持续运行

启动线程

怎么能让程序在各种屏幕都能运行

怎么设置开机自动启动

怎么设置程序升级

怎么把程序放到市场软件

源码被反编译后,怎么保证密码不泄漏


1,开发环境搭建:

  • Android Studio+JDK
    • Android Studio下载
      • http://www.android-studio.org/
    • JDK下载:
      • http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    • 版本管理
      • GIT下载:https://git-scm.com/download/win,并注册
      • 在Android配置GitHub:Android Studio---File---Settings---Version Control---GitHub
      • 配置Git安装路径:Android Studio---File---Settings---Version Control---Git
      • 上传项目:Android Studio---VCS---import into Version control---Share project on GitHub

2,模拟器:Genymotion

  • 下载地址    http://genymotion.en.softonic.com/
  • 网站用户名密码:[email protected]/xxxxxx

3,手机开启开发模式

  • 设置---关于手机---版本号 连续点击即可使能显示开发者配置
  • 设置---开发人员选项,使能下面项目
    • 开发人员选项 
    • USB调试 
    • 监控ADB安装应用 
    • 通过USB验证应用 
    • 阳光下可读性提升 
    • 使用旧版DHCP客户端

4, APK

  • 安装包,其实就是zip格式,解压后是Dex文件
  • Dex:Dalive VM executes

5,反编译工具:

  • AndroidKiller_v1.3.1        
    • 包含了apktool、dex2jar、jd-gui等工具

6,Android Studio编译C/C++

  • 安装相关插件(SDK Manager---SDK Tools)
    • NDK        能在Android上面使用C/C++代码工具集
    • Cmake    外部构建工具
    • LLDB        Android Studio上面调试本地代码的工匠

7,官方文档:

  • 需要翻墙访问:https://developer.android.com/index.html

8,SDK包说明:

9,Android尺寸

  •  单位

    • 建议: sp用于文字大小单位。dp用于其他元素
    • px        像素
    • in        英寸
    • mm        毫米
    • pt        磅    1/72英寸
    • dp        基于density抽象单位,在160点/英寸屏幕,1dp=1px
    • dip        等同于dp
    • sp        同dp相似,但会根据字体大小缩放    
  •  手机分辨率

    • 4:3
      • VGA        640*480 (Video Graphics Array)     
      • QVGA        320*240 (Quarter VGA)         
      • HVGA        480*320 (Half-size VGA)         mdpi
      • SVGA        800*600 (Super VGA)             
    • 5:3
      • WVGA    800*480 (Wide VGA)                 hdpi
    • 16:9
      • FWVGA     854*480 (Full Wide VGA)        hdpi
      • HD        1920*1080 High Definition        
      • QHD        960*540                hdpi
      • 720p        1280*720    标清            xhdpi
      • 1080p        1920*1080    高清             xxhdpi

10,Android体系结构:分为如下5层


11,Android studio主题(霸气黑主题)

  • file---set---Appearance---Theme--→Darcula

12,Android Studio显示行号

  • file---set---Editor---General--- Appearance---Show line numbers

13,Android studio常用快捷键

  • Alt    +    Enter        自动纠错提示,如自动导入类等
  • Ctrl    +    左键        跳转到定义处
  • shift    +    shift        查找
  • Ctrl    +    N        快速打开类
  • Ctrl+Shift+N            快速打开文件    
  • Ctrl    +    E        最近编辑的文档列表
  • Shift    +    单击        关闭文件
  • Ctrl    +    [ ]        跳到大括号头尾
  • Ctrl+Shift+    Backspace    跳到上次编辑
  • Ctrl    +    F12        显示当前文件结构
  • Ctrl    +    F7        当前元素在当前文件的引用 F3可选择
  • Ctrl    +    /        注释    取消注释    //
  • Ctrl+Shift+    /        注释    取消注释    /**/
  • Ctrl    +    D        复制并粘贴当前行
  • Ctrl+Alt+    L        格式化代码
  • Ctrl+Alt+    Backspace    代码提示
  • Ctrl+Shift+    F7        高亮显
    • F3                跳转下一个高亮处
    • ESC                取消高亮显示
  • logt                生成TAG
  • logd                打印log.d()
  • loge                打印log.e()

14,Android studio配置SDK与JDK路径

  • file---Other Settings---Default Project Structure

15,Android Studio的Project与Module概念

  • Project        工作空间(可以含有多个Module)
  • Module        具体项目

16, Android Studio的操作面板

  • Project面板(浏览项目文件)
  • Build Variants面板(设置当前项目编译参数:release/debug)
  • Android Monitor面板(监控调试信息)
  • 编辑区
  • Gradle面板(自动构建工具,Gradle任务列表,双击即可执行)

17,Android Studio的Project文件列表说明

  • Project有多种显示模式,我们以Android模式显示。
  • Res文件夹介绍
    • drawable    待用的图片文件
    • layout        布局文件
    • mipmap    图标文件
    • values        存放多个*.xml文件,包括各种配置/数据文件。
      • dimens.xml    用于定义尺寸常量值。
      • strings.xml    用于定义字符串常量值。
      • styles.xml    用于定义应用程序的style。

18,Android 的Activity模板

  • 项目右键new---Activity里面包含众多模板。

19,Android 的静态分析工具Android StudioLint

  • 菜单---Analyze---Inspect Code,能够检测潜在错误。
  • 在Analyze中还有很多分析工具有待于发掘。

20,Android Studio自动升级后项目卡在Gradle sync的解决方案

  • 打开android studio项目目
    • gradle\wrapper\gradle-wrapper.properties这个文件 
  • 按文件中distributionUrl 对应的网址下载文件
  • 将下载的zip文件放到如下路径,之后重启工程
    • C:\Users\Administrator\.gradle\wrapper\dists\gradle-x.x-all\x\ 

21,常用文件类型

  • 布局文件:activity_main.xml        (res/layout)        界面
  • 源码文件:MainActivity.java        (java/…/)        实现界面交互
  • 配置文件:AndroidManifest.xml    (manifests/)        全局配置文件
  • 样式定义:styles.xml                (res/values/)    

22,基本属性

  • 尺寸
    • match_parent    父控件匹配
    • fill_parent        与match_parent完全相同,但建议只在Android2.2版本以下使用。
    • wrap_content    全部内容扩展匹配

23,注释

  • java    与C一样
  • xml        
    • 单行注释    <!-- 注释 --> 
    • 多行注释    <![CDATA[     多行注释    ]]>

24,控件的触发

  • 可以在xml配置里面调用方法,但是因为不在java源码里,读取代码时不好找,所有部分程序员不这样操作。
  • 在java中自己编写触发事件,这个比较常用。

25,将原有的eclipse工程文件加载到Android studio

  • 加入页面        xml文件
  • 更新宏定义        res-->values文件
  • 更新图片        res-→drawable
  • 编码统一        用BCompare将编码同意改为UTF-8
  • 添加配置        更新 AndroidManifest.xml

26,Android屏幕元素层次结构

  • android.view.View
    • AnalogClock(小部件 时钟)
    • ImageView(图片)
      • ImageButton
        • 1....1.    ZoomButton
      • QuickContactBadge
    • KeyboardView(键盘视图)
    • ProgressBar(进度条)
    • TextView(文本,可超链接)
      • CheckedTextView
      • Button(按钮)
        • 1....1.    CompoundButton
          • 1....1.1.    CheckBox
          • 1....1.2.    RadioButton
          • 1....1.3.    ToggleButton(有状态按钮)
      • Chronometer
      • DigitalClock
      • EditText(编辑文本,首写字母大写/数字/密码/...)
        • 1....1.    AutoComplete TextView(自动补全)
          • 1....1.1.    MultAutoCompletTextView
        • 1....2.    ExtractEditText
    • SurfaceView(视频播放-游戏视频)
    • ViewGroup(视图容器)
      • AbsoluteLayout(绝对布局)
        • 1....1.    WebView
      • KeyboardView
        • 1....1.    AbsListView
          • 1....1.1.    GridView
          • 1....1.2.    ListView
            • 1....1.2.1.    ExpandableListView
        • 1....2.    AbsSpinner
          • 1....2.1.    Gallery
          • 1....2.2.    Spinner
      • UnearLayoue
        • 1....1.    RadioGroup
        • 1....2.    TabWidget
        • 1....3.    TableLayout
        • 1....4.    TableRow
        • 1....5.    ZoomControls
      • RelativeLayout(相对布局)
        • 1....1.    DialerFilter
        • 1....2.    TwolineListltem
      • SlidingDrawer(滑动式抽屉)
      • FrameLayout(层布局)
        • 1....1.    DatePicker(日期控件)
        • 1....2.    TimePicker(时间控件)
        • 1....3.    GestureOverlayView
        • 1....4.    ViewAnimator
          • 1....4.1.    ViewFlipper
          • 1....4.2.    ViewSwitcher
            • 1....4.2.1.    ImageSwitcher
            • 1....4.2.2.    TextSwitcher
        • 1....5.    HorizontalScrollView
        • 1....6.    ScrollView
        • 1....7.    MediaController
        • 1....8.    TabHost
    • ViewStub(指定一个布局,提高UI加载性能)

27,Android的主题

  • 在AndroidManifest.xml中设置
  • @android:style/Theme.Dialog    将一个Activity显示为能话框模式
  • @android:style/Theme.NoTitleBar不显示应用程序标题栏
  • @android:style/Theme.NoTitleBar.Fullscreen    不显示应用程序标题栏,并全屏
  • Theme.Light            背景为白色
  • Theme.Light.NoTitleBar    白色背景并无标题栏
  • Theme.Light.NoTitleBar.Fullscreen    白色背景,无标题栏,全屏、
  • Theme.Black            背景黑色
  • Theme.Black.NoTitleBar    黑色背景并无标题栏
  • Theme.Black.NoTitleBar.Fullscreen    黑色背景,无标题栏,全屏
  • Theme.Wallpaper        用系统桌面为应用程序背景
  • Theme.Wallpaper.NoTitleBar        用系统桌面为应用程序背景,且无标题栏
  • Theme.Wallpaper.NoTitleBar.Fullscreen系统桌面为应用程序背景,无标题栏,全屏
  • Translucent            半透明
  • Theme.Translucent.NoTitleBar        半透明、无标题栏
  • Theme.Translucent.NoTitleBar.Fullscreen    半透明、无标题栏、全屏
  • android:theme="Theme.Panel"
  • android:theme="Theme.Light.Panel"

28,Android创建UI的3种方式

  • 在XML种创建
  • 在Activity类种创建
  • 混合使用动态创建和XML布局创建(XSL主选)

29,Android常用控件

  • TextView
  • EditText
  • AutoCompleteTextView
  • MultiAutoCompleteTextView
  • Button
  • ImageView
  • ImageButton
  • ToggleButton(有状态按钮)
  • CheckBox
  • RadioButton、RadioGroup
  • DatePicker、TimePicker
  • ProgressBar
  • SeekBar(滑块)
  • Spinner(下拉列表)
  • ListView(列表容器)、Grid(网格)

30,关于R类

  • 在编译时会自动生成R类,为/res文件夹所有资源创建索引项
  • Java访问语法:[<package_name>.]R.<resource_type>.<resource_name>
  • XML访问语法:
    • @[<package_name>:]<resource_type>/<resource_name>

31,关于this

  • 当前对象的引用
  • 本类的成员变量

32,Android的两种事件处理机制

  • 监听机制
  • 回调机制
  • 事件处理程序与事件侦听器
    • onClick()            
      • OnClickListener()
    • onLongClick()      
      • OnLongClickListener()
    • onFocusChange()    
      • OnFocusChangeListener()
    • onKey()          
      • OnKeyListener()
    • onTouch()            
      • OnTouchListener()
    • onMenuItemClick()    
      • OnMenuItemClickListener()

33,Android的4大组件

  • Activites

    • 活动组件(对应窗体,用户交互)
    • 显示指定控件    setContentView(View)
    • 在AndroidManifest.xml中定义首先加载的组件
    • 切换/激活
      • 普通切换方法(有去无回)        
        • 1....1.    startActivity(Intent)
      • 应答模式切换(有来有回)
        • 1....2.    A1-->A2:startActivityForResult(intent,0)
        • 1....3.    A2-→A1:setResult(RESULT_OK,intent)
        • 1....4.    A1接受方法:onActivityResult()
    • 4种状态
      • Runing        运行状态
      • Paused        暂停状态
      •  Stoped        停止状态
      • Killed            注销状态
      • 程序员可以绝对Active的生,但是不能决定死,由Android栈自动管理。
    • 生命周期方法
      • onCreate()            创建
        • onStart()              开始
          • onResume()            恢复
          • onPause()            暂停
        • onStop()            停止
        • onRestart()            重启动
      • onDestroy()            注销
  • Service                    

    • 概念:
      • 服务组件(后台工作)
      • 生命周期
        • 调用startService 启动:不随启动Activity的结束而停止。
        • 调用bindService 启动:随解绑或Activity的结束而停止。
    • 注册
      • <service android:name=“.LocalService” />
    • 两种启动方式
      • Context.startService()    ---    Context.stopService()
      • Context.bindService()    ---    Context.unbindService()
    • 回掉方法
      • onStartCommand()
      • onBind()
      • onCreate()
      • onDestroy()
  • Broadcast Receivers

    • 广播接收器
    • 发送广播(发送Broadcast Intent)
      • 普通广播    Context.sendBroadcast()
      • 有序广播    Context.sendOrderBroadcast()
      • Context.sendStickBroadcast()
    • 生命周期:常驻/非常驻
    • 方法
      • onReceive()    不能处理耗时程序,几秒没执行完会出现ANR错误
        • ANR:Application No Response
    • 流程
      • 注册receiver
        • 静态注册(常驻):在AndroidManifest.xml
        • 动态注册(非常驻,跟随程序的生命):在Java中
          • 在onStart()中注册
          • 在onStop()中注销
      • 调用sendBroadcast()发送广播
      • 调用onReceive()处理广播
      • 调用startService()方法启动服务
      • 调用stopService()方法停止服务
  • ContentProviders        

    • 内容提供者(共享数据操作)
  • 组件间通讯(Intents框架)

    • 组件切换            Intent
    • 组件间信息传递构成    
      • Action            动作
      • Data            动作数据
      • Category        一个类别字符串
      • Type            类型
      • component        目标组件类名称
      • extras            其他(如:Bundle)

34,Activity与Fragment(碎片)

  • Activity中融入Fragment是非常棒的。

35,Android调试信息打印---Log方法

  • Log类位于android.util包中,继承自java.lang.Object类
  • 方法
    • Log.v    黑色    输出任何消息
    • Log.d    蓝色    输出debug故障日志信息
    • Log.i    绿色    输出一般提示性消息(Log.w    + Log.e)
    • Log.w    橙色    输出warning警告日志信息(+Log.e)
    • Log.e    红色    输出错误信息

36,Android消息提示框---Toast

  • 不会获得焦点,不能被单击。
  • 根据设定时间自动消失
  • 引入包
    • import android.widget.Toast
  • 显示提示内容:
    • Toast.makeText(对象,内容,时长).show();
  • 设置显示位置:
    • toast.setGravity()
    • toast.setMargin()

37,Android对话框---AlertDialog

  • 创建:AlertDialog.Builder.create()

38,Android通知---Notofication

  • 导入类
    • import android.app.PendingIntent;
    • import android.app.NotificationManager;
    • import android.app.Notification;
  • 步骤
    • 获取NotificationManager 对象
    • 初始化Notification对象
    • 设置通知显示参数
    • 发送通知

39,Android异常

  • try{}catch(...){}
  • 常见异常
    • Exception            总异常(以下所有异常类的父类)
    • ClassCastException        类型转换异常
    • ClassNotFoundException    未找到相应类异常
    • ArithmeticException    算术异常
    • ArrayIndexOutOfBoundsException    数组下标越界异常
    • ArrayStoreException    数组中包含不兼容的值的异常
    • SQLException        操作数据库异常类
    • NullPointerException    空指针异常
    • NoSuchFieldException    字段未找到异常
    • NoSuchMethodException    方法未找到异常
    • NumberFormatException    字符串转换为数字异常
    • NegativeArraySizeException        数组元素个数为负数异常
    • StringIndexOutOfBoundsException    字符串索引超出范围异常
    • IOException            输入输出异常
    • IllegalAccessException    不允许访问某类异常
    • InstantiationException    当应有程序使用Class类中的呢我Instance()方法创建一个类实例,而指定的类对象无法被实例化,抛出此异常。
    • EOFException        文件已结束异常
    • FileNotFoundException    文件未找到异常
  • 运行时异常    (RuntimeException)
    • NullPointerException    空指针异常
    • ArrayIndexOutOfBoundsException    数组下标越界异常
    • ArithmeticException    算术异常
    • ArrayStoreException    数组中包含不兼容的值的异常
    • IllegalArgumentException    非法参数异常
    • SecurityException        安全性异常
    • NegativeArraySizeException        数组元素个数为负数异常

40,Android的数据存储

  • SQLite

    • 类型:NULL、Integer、Real、Text、Blob(大数据)
    • 包android.database.sqlite的方法
      • beginTransaction()
      • close()
      • delete()
      • endTransaction()
      • execSQL()
      • insert()
      • openOrCreateDatabase()
      • query()
      • rawQuery()
      • update()
  • SharedPreference

    • 本质是XML文件,常用于参数设置,无法条件查询
    • 类型:boolean、int、float、long、String
    • 步骤
      • 根据Context获取SharedPreferences对象
      • 利用edit()方法获取Editor对象
      • 通过Editor对象存储key-value键值对数据
      • 通过commit()方法提交数据
    • 常用方法
      • contains()
      • edit()
      • getAll()
      • getXXX()
  • ContentProvider

    • 所有应用程序共享的存储方式,音频视频图片通讯录等
    • 提供URI对象,由“content://”、数据路径,标识ID组成
    • 数据包装器,可以把SQLite包装起来,实现非路径访问
    • 步骤:
      • 在当前应用程序定义一个ContentProvider
      • AndroidManifest.xml中注册此ContentProvider
      • 其他程序通过ContentProvider和Uri获取数据
  • File

    • 用于存储大数据量的数据
    • 两种操作方式
      • Java提供的IO流体(仅当前程序可见,卸载即删除)
        • 1....1.    openFileInput()
        • 1....2.    openFileOutput()
      • Environment类(全局可操作)
        • 1....1.    getExternalStorageDirectory()

41,Android的回收

  • WeakReference    

    • 弱引用    只有它指向object,并且GC运行,则回收object
    • 实例
import java.lang.ref.WeakReference;

public class WeakReferenceTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A a = new A();
        a.str = "Hello, reference";
        WeakReference<A> weak = new WeakReference<A>(a);
        a = null;
        int i = 0;
        while (weak.get() != null) {
            System.out.println(String.format("Get str from object of WeakReference: %s, count: %d", weak.get().str, ++i));
            if (i % 10 == 0) {
                System.gc();
                System.out.println("System.gc() was invoked!");
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
        }
        System.out.println("object a was cleared by JVM!");
    }

}
  • 结果
Get str from object of WeakReference: Hello, reference, count: 1
Get str from object of WeakReference: Hello, reference, count: 2
Get str from object of WeakReference: Hello, reference, count: 3
Get str from object of WeakReference: Hello, reference, count: 4
Get str from object of WeakReference: Hello, reference, count: 5
Get str from object of WeakReference: Hello, reference, count: 6
Get str from object of WeakReference: Hello, reference, count: 7
Get str from object of WeakReference: Hello, reference, count: 8
Get str from object of WeakReference: Hello, reference, count: 9
Get str from object of WeakReference: Hello, reference, count: 10
System.gc() was invoked!
object a was cleared by JVM!
  • SoftReference    

    • 强引用    当系统内存不足时才回收,并后续自动启动
    • 实例
import java.lang.ref.SoftReference;

public class SoftReferenceTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A a = new A();
        a.str = "Hello, reference";
        SoftReference<A> sr = new SoftReference<A>(a);
        a = null;
        int i = 0;
        while (sr.get() != null) {
            System.out.println(String.format("Get str from object of SoftReference: %s, count: %d", sr.get().str, ++i));
            if (i % 10 == 0) {
                System.gc();
                System.out.println("System.gc() was invoked!");
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
        }
        System.out.println("object a was cleared by JVM!");
    }

}
  • 结果
Get str from object of SoftReference: Hello, reference, count: 1
Get str from object of SoftReference: Hello, reference, count: 2
Get str from object of SoftReference: Hello, reference, count: 3
Get str from object of SoftReference: Hello, reference, count: 4
Get str from object of SoftReference: Hello, reference, count: 5
Get str from object of SoftReference: Hello, reference, count: 6
Get str from object of SoftReference: Hello, reference, count: 7
Get str from object of SoftReference: Hello, reference, count: 8
Get str from object of SoftReference: Hello, reference, count: 9
Get str from object of SoftReference: Hello, reference, count: 10
System.gc() was invoked!
Get str from object of SoftReference: Hello, reference, count: 11
Get str from object of SoftReference: Hello, reference, count: 12
Get str from object of SoftReference: Hello, reference, count: 13
Get str from object of SoftReference: Hello, reference, count: 14
Get str from object of SoftReference: Hello, reference, count: 15
Get str from object of SoftReference: Hello, reference, count: 16
Get str from object of SoftReference: Hello, reference, count: 17
Get str from object of SoftReference: Hello, reference, count: 18
Get str from object of SoftReference: Hello, reference, count: 19
Get str from object of SoftReference: Hello, reference, count: 20
System.gc() was invoked!
Get str from object of SoftReference: Hello, reference, count: 21
Get str from object of SoftReference: Hello, reference, count: 22
Get str from object of SoftReference: Hello, reference, count: 23
Get str from object of SoftReference: Hello, reference, count: 24
Get str from object of SoftReference: Hello, reference, count: 25
Get str from object of SoftReference: Hello, reference, count: 26
Get str from object of SoftReference: Hello, reference, count: 27
Get str from object of SoftReference: Hello, reference, count: 28

42,网络通讯

  • 使用HttpURLConnection访问网络

    • 创建一个URL对象
      • URL url=new URL(http://www.baidu.com);
    • 利用HttpURLConnection对象从网络中获取数据
      • HttpURLConnection conn=(HttpURLConnection)url.openConnection();
    • 设置连接超时
      • conn.setConnectionTimeout(6*1000);
    • 对相应吗进行判断:
      • if(conn.getResponseCode() !=200)throw new RuntimeException("请求url失败")
    • 得到返回的数据流:
      • InputStream is =conn.getInputStream();
    • 输入流转为字符串
      • String result=readData(is,"GBK");
    • 关闭连接
      • conn.disconnect();
  • 使用HttpClient访问网络

    • 说明:增强版的HttpURLConnection,不执行JavaScript/不解析处理内容
    • 创建HttpClient对象
    • 创建请求方法的实例,并指定请求URL
    • 发送请求参数
    • 调用HttpClient对象的execute发送请求
    • 调用HttpResponse的getAllHeaders()等方法获取响应
    • 释放连接

43,更新UI

  • Thread+Handler机制
    • 由新线程发送消息,再由主线程Handler处理消息
  • Handler对象发送消息方法
    • postMessage()
    • sendMessage()
    • sendEmptyMessage()
  • Handler对象接收消息方法
    • handlerMessage()
    • hasMessage()
  • Handler消息机制的4个关键对象
    • Handler        处理者
    • Message        消息数据结构
    • MessageQueue    消息队列
    • Looper        每个线程中MessageQueue的管家

44,进入Shell

  • 工具
    • 路径:Android\sdk\platform-tools
    • 工具:在终端中打入指令adb shell
  • 注意
    • 在360等各个软件助手开启时,命令出错,因为抢占端口。

45,问题解答(未完待续)

  • 怎么能让程序持续运行

  • 华为手机进入工厂设置(开启LOG)的神秘代码

    • *#*#2846579#*#*
  • Thread/Looper/Handler/Message/Intent

    • Handler    组件内用于线程间的通讯的消息队列
    • Intent        组件间的通讯
    • Looper        消息轮询器
    • 发现新消息,调用handlemessage方法
    • Message    消息
  • 怎么能让程序持续运行

  • 怎么能让程序持续运行

  • 启动线程

  • 怎么能让程序在各种屏幕都能运行

  • 怎么设置开机自动启动

  • 怎么设置程序升级

  • 怎么把程序放到市场软件

  • 源码被反编译后,怎么保证密码不泄漏

    • 答:用不对称加密技术 
       
发布了28 篇原创文章 · 获赞 81 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xslxhn/article/details/83343919
今日推荐