![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
lj2012sy
这个作者很懒,什么都没留下…
展开
-
多线程编程(2):解析异步消息处理机制
解决在子线程中进行UI操作的问题 异步消息处理机制一般用于如解决在子线程中进行UI操作的问题。 和许多其他的GUI库一样,Android的UI也是线程不安全的。也就是说,如果想要更新应用程序里的UI元素,则必须在主线程中进行,否则就会出现异常。public class MainActivity extends Activity implements OnClickListener { p原创 2016-06-15 09:05:20 · 347 阅读 · 0 评论 -
Git(2)
提交本地代码单个添加git add readme.txt全部添加(除了.gitignore中的文件)git add . 以上出现的warning不用担心,如果想关闭warning方法如下:git config core.autocrif true真正提交 。。。。查看提交记录git log查看还未add和commit的修改内容查看哪个文件修改过git status查看具体修改什么git diff原创 2016-06-18 23:42:05 · 186 阅读 · 0 评论 -
TabLayout+ViewPager(1)
步骤1:添加依赖compile 'com.android.support:support-v4:23.4.0'compile 'com.android.support:design:23.4.0'步骤2:创建Fragmentfragment1.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2016-06-18 18:00:25 · 278 阅读 · 0 评论 -
TabLayout
步骤1:添加依赖compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.android.support:design:23.4.0'注意:下面的版本号一定要跟上面的一样否则会报错。步骤2:使用TabLayout 在XML中设置TabItem<RelativeLayout xmlns:android="http://sche原创 2016-06-18 17:14:57 · 294 阅读 · 0 评论 -
Retrofit与RxAndroid结合使用
步骤1:添加依赖compile 'io.reactivex:rxjava:1.1.6'compile 'io.reactivex:rxandroid:1.2.1'compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:retrofit-adapters:2.1.0'compile 'com.原创 2016-06-18 16:16:49 · 274 阅读 · 0 评论 -
RxJava与RxAndroid
步骤1:在Android Studio中使用需要添加依赖compile 'io.reactivex:rxjava:1.1.6'compile 'io.reactivex:rxandroid:1.2.1'步骤2:MainActivity.javapublic class MainActivity extends AppCompatActivity { private TextView text原创 2016-06-18 13:37:45 · 269 阅读 · 0 评论 -
RxJava
知识来源:http://www.imooc.com/article/2298什么是ReactiveX?ReactiveX是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。实时数据处理是一件普通的现象,有一个高效、干净和可扩展的方式来处理这些情景是重要的。使用Observables和Operators来熟练操作它们。ReactiveX提供原创 2016-06-18 12:16:41 · 332 阅读 · 0 评论 -
设计模式:工厂模式
简介它属于创建型模式,提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。代码演示步骤1:创建一个接口。 Shape.javapublic interface Shape { void draw();}步骤2:创建实现接口的实体类。 Rectangle.javapublic class Rectangle原创 2016-06-18 11:53:56 · 184 阅读 · 0 评论 -
HTTP协议:简介
全称为超文本传输协议(HyperText Transfer Protocol),设计之初是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。现在http的作用已不局限于HTML的传输。URLURL示例:http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuffSchema: http host: www原创 2016-06-17 21:24:37 · 273 阅读 · 0 评论 -
Android之URL
URL代表统一资源定位器,它是指向互联网“资源”的指针。URL可以由协议名、主机、端口、和资源组成。 格式:protocal://host:port/resourceName; 例如:http://hao123.com/tiyan.html URL包含的一些方法用于访问URL对应的资源: getFile(); 获取此url的资源名; getHost(); 获取此url的主机名;原创 2016-06-18 08:16:47 · 757 阅读 · 0 评论 -
Android之ContentProvider(一):内容提供器的用法
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能。创建内容提供器public class DatabaseProvider extends ContentProvider { private static UriMatcher uriMatcher; public static final String AUTHORITY = "jun.de原创 2016-06-16 07:46:26 · 798 阅读 · 0 评论 -
Git(1)
步骤1 使用Git Bash方法1 使用命令行进入Git安装目录的bin文件下cd “\Program Files (x86)\Git\bin” 这样就可以使用Git Bash了。方法2 相比方法1更简便。步骤2 设置Git配置emailgit config --global user.email “2447828262@qq.com”配置namegit config --global原创 2016-06-18 23:20:22 · 289 阅读 · 0 评论 -
SearchView(1)
步骤1 将SearchView作为OptionMenu的一个Itemres/menu/option_menu.xml<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android原创 2016-06-20 11:22:57 · 256 阅读 · 0 评论 -
多线程编程(1):线程的基本用法
Android多线程编程其实并不比Java多线程编程特珠,基本都是使用相同的语法。比如说,定义一个线程只需要新建一个类继承自Thread,然后重写父类的run()方法,并在里面编写耗时逻辑即可,如下所示:class MyThread extends Thread { @Override public void run() { //处理具体的逻辑 }}启动这个原创 2016-06-15 08:55:42 · 209 阅读 · 0 评论 -
多线程编程(3):AsyncTask的基本用法
为了更加方便在子线程中对UI进行操作,Android还提供了另外一些好用的工具,AsyncTask就是其中之一。借助AsyncTask,即使对异步消息处理机制完全不了解,也可以十分简单地从子线程切换到主线程。当然,AsyncTask背后的实现原理也是基于异步消息处理机制的,只是Android做了很好的封装而已。 由于AsyncTask是一个抽象类,所以如果想使用它,就必须要创建一个子类去继承它。在原创 2016-06-15 09:44:42 · 329 阅读 · 0 评论 -
Gson(1)
添加依赖compile 'com.google.code.gson:gson:2.7'推荐:Android Studio的插件GsonFormat可以根据Json数据快速创建对应的类。解析一段Json数据Json数据 {“name”:”Tom”,”age”:20} 其对应的一个Person类public class Person { private String name; pr原创 2016-06-20 20:01:54 · 378 阅读 · 0 评论 -
Web服务器(2):自己提供XML数据和Json数据
自己提供XML数据1 在C:\Apache24\htdocs目录中创建一个XML格式的文件xml_data.xml文件 2 编辑文件加入如下XML数据<apps> <app> <id>1</id> <name>Google Maps</name> <version>1.0</version> </app> <app>原创 2016-06-20 16:16:22 · 409 阅读 · 0 评论 -
OkHttp(1):GET和POST
Http Get以异步的方式执行请求private void requestHttp1() { //请求的网络地址 String url = "http://www.baidu.com"; //创建OkHttp客户端实例 OkHttpClient mOkHttpClient = new OkHttpClient(); /原创 2016-06-17 18:44:16 · 408 阅读 · 0 评论 -
HttpURLConnection(1):网络编程的最佳实践
HttpCallbackListener接口HttpCallbackListener.javapublic interface HttpCallbackListener { void onFinish(String response); void onError(Exception e);}HttpUtil工具类public class HttpUtil { public原创 2016-06-20 17:09:35 · 394 阅读 · 0 评论 -
ViewPager(2):ViewPager与Fragment一起使用
FragmentPagerAdapterFragmentPagerAdapter继承自PagerAdapter ,主要用来展示多个Fragment页面,并且每一个Fragment都会被保存在FragmentManager中。 FragmentPagerAdapter最适用于那种少量且相对静态的页面。对于较多的页面集合,更推荐使用FragmentStatePagerAdapter。 FragmentP原创 2016-06-17 10:36:42 · 1837 阅读 · 0 评论 -
ViewPager(1):简单的使用ViewPager
ViewPager简介ViewPager是一个允许使用者左右滑动数据页面的布局管理器,通过一个适配器(PagerAdapter)来管理要显示的页面。 ViewPager更多的时候会与Fragment一起使用,这是一种很好的方法来管理各个页面的生命周期。Android提供了一些专门的适配器来让ViewPager与Fragment一起工作,也就是FragmentPagerAdapter与Fragment原创 2016-06-17 07:40:22 · 370 阅读 · 0 评论 -
Web服务器(1):使用Apache服务器进行搭建
这里使用Apache服务器来作为Web服务器进行搭建。安装Apache1 从Apache官网下载得到Apache24的httpd-2.4.20-x64-vc11-r2.zip压缩包 直接下载页面https://www.apachehaus.com/cgi-bin/download.plx 2 然后解压得到httpd-2.4.20-x64-vc11-r2文件 3 将httpd-2.4.20-x6原创 2016-06-20 15:41:59 · 690 阅读 · 0 评论 -
Json(1)
Json简介Json的全名是JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样, 广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性。Json的格式规范语法规则 数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组。 书写格式 数据:名称/值对,比如: “person”:”coder-pig” 简单的J原创 2016-06-20 14:14:08 · 269 阅读 · 0 评论 -
Android之ContentProvider(二):Uri对象的内容URI
不同于SQLiteDatabase,ContentResolver中的增删改查方法都是不接收表名参数的,而是使用一个Uri参数代替,这个参数被称为内容URI。 内容URI 内容URI给内容提供器中的数据建立了唯一标识符。它主要由两部分组成,权限(authority)和路径(path)。权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。比如某个程序的包名是co原创 2016-06-16 11:49:29 · 1185 阅读 · 0 评论 -
Android之ContentProvider(三):Uri对象所对应的MIME类型
一个内容URI所对应的MIME字符串主要由三部分组分。 1. 必须以vnd开头。 2. 如果内容URI以路径结尾,则后接android.cursor.dir/,如果内容URI以id结尾,则后接android.cursor.item/。 3. 最后接上vnd.<authority>.<path>。 对于content://com.example.app.provider/table1这个内容U原创 2016-06-16 12:39:39 · 887 阅读 · 0 评论 -
Android之BroadcastReceiver(四):使用本地广播
系统全局广播:本应用程序发出的广播可以被任何其他应用程序接收到,并且本应用程序也可以接收来自于任何其他应用程序的广播。 本地广播:发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播。使用本地广播LocalBroadcastManager localBroadcastManager;IntentFilter intentFilter;LocalReceiv原创 2016-06-16 07:21:29 · 5068 阅读 · 2 评论 -
Android之Activity(五):知晓当前是在哪一个活动?
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I原创 2016-06-14 09:28:06 · 343 阅读 · 0 评论 -
Android之Activity(四):活动的启动模式
launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个Task里。 Task是一个具有栈结构的对象,一个Task可以管理多个Activity,启动一个应用,也就创建一个与之对应的Task。 Activity一共有以下四种launchMode: 1.stand原创 2016-06-14 18:31:09 · 267 阅读 · 0 评论 -
Android之Activity(三):活动的生命周期
返回栈Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况下,每当启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而当按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。 示意图展示了返回栈是原创 2016-06-14 12:57:48 · 597 阅读 · 0 评论 -
Android之Activity(一):活动简介
活动(Activity)是一种可以包含用户界面的组件,主要用于和用户进行交互。public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);原创 2016-06-15 07:31:35 · 471 阅读 · 0 评论 -
Android之Activity(二):使用Intent在活动之间穿梭
IntentIntent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务、以及发送广播等场景。Intent的用法大致可以分为两种,显式Intent和隐式Intent。显式IntentIntent有多个构造函数的重载,其中一个是Intent(Context package原创 2016-06-14 22:26:53 · 681 阅读 · 0 评论 -
Android之Fragment(五):Fragment的通信问题
在Activity中获取Fragment<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_activity_layout" android:layout_width="match_parent" android:layout_he原创 2016-06-14 17:51:34 · 350 阅读 · 0 评论 -
Android之Fragment(四):碎片的生命周期
碎片是什么?碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它总是依附于活动而存在。碎片的状态碎片一共有运行状态、暂停状态、停止状态和销毁状态这四种。 1. 运行状态 若碎片所关联的活动正处于运行状态时,该碎片是可见的那它就也处于运行状态。 2. 暂停状态 若碎片所关联的活动进入暂停状态时,该碎片就会进入到暂停状态。 3. 停止状态 若碎片所关联的活动进入停止状态时,该碎片就原创 2016-06-14 13:57:30 · 1644 阅读 · 0 评论 -
Android之Fragment(三):动态替换碎片
先动态加载了Fragment1。 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fragment原创 2016-06-14 16:53:22 · 1410 阅读 · 0 评论 -
Android之Fragment(二):动态加载碎片
假设已经创建好了MyFragment,首先给Activity的布局设置id以备之后要用。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_activity_layout" android:layout_width="match_paren原创 2016-06-14 16:29:48 · 2497 阅读 · 1 评论 -
Android之Service(一):服务简介
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。 不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会原创 2016-06-15 08:47:41 · 305 阅读 · 0 评论 -
Android之Activity(六):如何一键销毁所有活动?
首先创建一个管理活动管理器public class ActivityCollector { //存储Activity的List public static List<Activity> activities = new ArrayList<Activity>(); //添加Activity public static void addActivity(Activity原创 2016-06-14 11:47:09 · 4059 阅读 · 0 评论 -
Android之Activity(七):启动活动的最佳写法
在活动中向外提供启动该活动的方法,这样如果想要启动某个活动只要调用该活动的启动方法即可。public class NewActivity extends BaseActivity { //启动该活动 public static void actionStart(Context context, String data1, String data2) { Intent原创 2016-06-14 12:06:52 · 1223 阅读 · 0 评论 -
Android之BroadcastReceiver(三):发送自定义广播
发送标准广播Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");sendBroadcast(intent);由于广播是使用Intent进行传递的,因此还可以在Intent中携带一些数据传递给广播接收器。发送有序广播广播是一种可以跨进程的通信方式,因此在本应用程序内发出的广播,其他的应用程序也可以收到的。Inten原创 2016-06-16 07:06:44 · 651 阅读 · 0 评论 -
Android之BroadcastReceiver(二):接收系统广播
Android内置了很多系统级别的广播,可以在应用程序中通过监听这些广播来得到各种系统的状态信息。比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条广播等等。如果想要接收到这些广播,就需要使用广播接收器(BroadcastReceiver)。创建广播接收器public class NewBroadcastReceiver extends Broadca原创 2016-06-15 20:58:02 · 730 阅读 · 0 评论