
Android
Wesnoth
这个作者很懒,什么都没留下…
展开
-
发送短信
发送短信转载 2015-06-16 10:06:30 · 794 阅读 · 0 评论 -
数据保存(一):SharedPreference
方法一:SharedPreference 适合保存零散的不重要的数据, 以键值对的形式保存在/data/data/应用程序包/shared_prefs目录下的xml文件中。SharedPreferences sharedPreferences = null;// A.获取SharedPreferences对象if (noName){ // 这种方式的文件名为“Activity的类名.x原创 2015-11-01 23:57:04 · 596 阅读 · 0 评论 -
Android进程和线程
当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。本文档介转载 2015-11-24 00:10:28 · 490 阅读 · 0 评论 -
Android进程间通信(一):Messenger
Messeger适用于跨进程通信时不需多线程交互的情况。如若需要跨进程多线程交互,可以使用AIDL(请看《Android进程间通信(二):AIDL》)。一、可运行代码类(Runnable)public interface Runnable { /** * 把需要运行的代码放在这个方法中 */ public void run();}二、线程类(Thread类)p原创 2015-06-23 19:18:50 · 772 阅读 · 0 评论 -
让Android应用保持灵敏响应:AsyncTask
任何可能需要较长时间的操作都不应该放在UI主线程里,而应该创建一个工作线程去处理。当前台Activity未在5秒内对用户点击事件或者BroadcastReceiver接收到广播后未在10秒内返回,Android就会抛出一个应用无响应(ANR)的对话框,以供用户选择是否关闭该应用。如何避免ANR?创建一个处理长时间操作的工作线程的最佳方式是继承AsyncTask类:// AsyncTask<Param原创 2015-11-25 01:30:44 · 728 阅读 · 0 评论 -
给ListView异步加载Cursor
LoaderManager 每个Activity或者Fragment只有一个LoaderManager, 它可以根据前两者的生命周期来管理若干个Loader。LoaderManager.LoaderCallbacks 它提供三个接口和LoaderManager进行互动:onCreateLoader(怎么创建一个Loader)、onLoadFinished(当某个Loader加载完毕)、onLo原创 2015-11-11 19:27:17 · 629 阅读 · 0 评论 -
Android进程间通信(二):AIDL
AIDL (Android Interface Definition Language)即Android接口定义语言。若需多线程同时处理其他应用进程的请求才有必要使用AIDL。如果不需多线程交互,则可使用Messager(请看《Android进程间通信(一):Messager》);而如果不需跨进程通信,使用Binder即可。 AIDL接口通常与Service联合使用。客户端通过bindServic原创 2015-11-23 22:45:35 · 687 阅读 · 0 评论 -
Android媒体播放:MediaPlayer
一、基本的类 MediaPlayer 播放音频和视频。 AudioManager 管理音频资源和音频输出。三、使用MediaPlayer 播放应用的内置raw资源:MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);// create()中已调用prepare(),不必再调用后者mediaP原创 2015-12-04 13:18:16 · 942 阅读 · 0 评论 -
(未完成)Android版本更新变迁
Android 6.0(API 23,代号棉花糖Marshmallow) 1、运行时授权(Runtime Permissions) 应用将在运行时获取用户授权,而不是在安装时。 权限分为两种:普通权限,不会触及用户隐私,系统自动准许;危险权限,能访问到用户的私密数据,需要用户明确地授予。 2、打盹模式和APP待机(Doze and App Standby) 当设备未原创 2016-02-28 22:28:48 · 537 阅读 · 0 评论 -
Android自定义WheelView的40行关键代码
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { View firstVisibleView = view.原创 2016-05-08 22:55:54 · 1545 阅读 · 0 评论 -
后台服务(Service)简述
一、简介Service是应用的后台服务,它用来执行不需与用户交互的、耗时的操作,或者给其他应用提供一些功能。Service默认运行在用户界面(Activity)所在的主线程中,所以它的执行速度越快越好。如果有耗时较长或者会阻塞的操作,可以在Service中创建一个线程去完成它。若Service的执行时间超过5秒,系统会抛出“应用程序无响应(ANR)”的对话框。二、注册Service所有Service原创 2015-06-18 17:43:52 · 2273 阅读 · 0 评论 -
任务和返回栈
打开一个最近未使用过的APP时,系统会创建一个新的任务(它是一个后进先出的栈),把APP的主Activity放入其中。默认模式下,后续启动的获得用户焦点的Activity会堆叠在栈顶。当用户按下返回键时,栈顶的Activity会被弹出销毁,并返回前一个Activity(此时为新的栈顶)。一个任务可以包含不同APP的Activity(比如APP A启动了APP B的Activity来拍照),一个Act原创 2015-11-21 19:47:22 · 521 阅读 · 0 评论 -
用户界面(Activity)初探
一、简介Activity是应用的用户界面,它运行于进程的主线程中。为了良好的用户体验,它的代码执行速度要尽可能地快。二、启动ActivityActivity有两种启动方式,一种是用户点击应用图标进入应用的主Acitivity,一种是根据需要用代码启动某个Activity。前者是由系统在应用的AndroidManifest.xml文件(所有Activity都应该在它里面注册相应的节点)中找到包含以下i原创 2015-06-19 11:50:15 · 629 阅读 · 0 评论 -
广播接收者(BroadcastReceiver)详解
广播是一种传递信息的机制,广播接收者(BroadcastReceiver)可以监听它所感兴趣的广播。每当指定的广播到来时,系统都会重新构造广播接收者对象并调用其onReceive方法,调用完毕后它便会被销毁。广播接收者运行在主线程中,所以它的执行速度越快越好,若未在10秒内完成会导致系统抛出“应用程序无响应”的对话框。原创 2015-06-16 17:34:12 · 1445 阅读 · 0 评论 -
Android应用层访问底层驱动的简易方法
Android应用层访问底层驱动原创 2015-03-26 18:39:49 · 1399 阅读 · 0 评论 -
数据保存(二):文件
Internal Storage指内部存储,每个应用都有属于自己的目录:/data/data/应用程序包名,适合保存较小的流式数据,比如截图、铃声等。// 如果没有context对象或者想缓存(临时)文件if(!hasContextAndNotCache){ // 1.获取文件夹 File dir = null; if(isCache) { //原创 2015-11-02 01:42:16 · 613 阅读 · 0 评论 -
将输入流(InputStream)转换为位图(Bitmap)
InputStream is = null;...Bitmap bitmap = BitmapFactory.decodeStream(is);ImageView imageView = (ImageView) findViewById(R.id.image_view);imageView.setImageBitmap(bitmap);转载 2015-10-03 21:00:00 · 9468 阅读 · 0 评论 -
Android连接网络
一、所需权限:<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />二、关键方法public class HttpExampleActivity extends Activity {转载 2015-10-03 20:49:49 · 488 阅读 · 0 评论 -
数据保存(三):数据库
一、继承SQLiteOpenHelper类public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "wesnoth.db";原创 2015-11-04 00:24:53 · 535 阅读 · 0 评论 -
Android布局相关
一、关于layout_weight<LinearLayout android:orientation="横向或垂直" ...> <EditText android:layout_weight="布局比重值" ... /> ...</LinearLayout>布局比重(layout_weight)属性只在线性布局(LinearLayout)中原创 2015-09-18 23:22:30 · 456 阅读 · 0 评论 -
用Fragment创建模块化组件
Fragment类似于Activity,有自己的layout布局,也有一系列相关的生命周期方法。在Activity运行(resumed)期间,它的生命周期可以独立地控制,但当Activity停止或销毁时,尚未销毁的它将一起被停止或销毁。它是View的子类ViewGroup的子类。package com.company.app;import android.app.Fragment;import a原创 2015-10-23 23:47:29 · 925 阅读 · 0 评论 -
Android适配不同语言、屏幕,提高兼容性
一、语言适配MyProject/ res/ values/ // 默认英文en strings.xml values-es/ // 适配西班牙语 strings.xml values-fr/ // 适配法语 strings.xml二、屏幕适配调原创 2015-09-18 23:34:09 · 1187 阅读 · 0 评论 -
Android可缩放矢量图形(SVG)
以下为心形图标的xml文件:<!-- res/drawable/heart.xml --><vector xmlns:android="http://schemas.android.com/apk/res/android" <!-- 生成图形的尺寸 --> android:height="256dp" android:width="256dp" <!-- 虚拟画布的原创 2017-03-26 19:04:30 · 2061 阅读 · 0 评论