Younix's Studio.

Linux device 操作接口
device 操作 API将新的 device 注册到设备模型device_create->device_create_vargs->device_register->device_add12345678struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...){ ...... dev = device_create_vargs(cla...
Linux 链表操作接口
[TOC] 前提是假设大家有链表的基础https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 声明和初始化Linux 只定义了链表的节点, 没有专门定义链表头.链表结构是这样建立的 声明时初始化链表 LIST_HEAD_INIT12#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name) LIS...
Linux Input 子系统分析
[TOC] 框架结构Input 子系统从上到下分为三层实现, 分别为 事件处理层 EventHandler / 核心层 InputCore / 驱动层 Driver Driver 层: 硬件设备读写访问, 中断设置 , 将硬件产生的事件转换为核心层定义的规范提交给 EventHandler.InputCore 层: 为设备驱动层提供了规范和接口。设备驱动层只要关心如何驱动硬件并获得硬件数据(例如按下的按键数据),然后调用核心层提供的接口,核心层会自动把数据提交给事件处理层。EventHandler 层: 用户编程的接口(设备节点),并处理驱动层提交的数据处理。 驱动层流程驱动开发的工作:...
组件_Service.md
基本概念Service 是 Android 中实现程序后台运行的解决方案,适合执行那些不需要和用户交互而且还要求长期运行的任务. 4个手动调用的方法startService() 启动服务, 手动调用 startService() 后,自动调用内部方法:onCreate()、onStartCommand().stopService() 关闭服务, 手动调用 stopService() 后,自动调用内部方法:onDestory(). 但是如果没有解绑, 是无法停止服务的bindService() 绑定服务, 手动调用 bindService()后,自动调用内部方法:onC...
SOP_全局获取Context方法
利用 Application 类.当应用程序启动时 , 系统会自动对 Applicaiton 类进行初始化.我们可以定制自己的一个 Application 类, 以便于管理程序内的 全局状态信息. 自定义 WholeApplication 类1234567891011public class WholeApplication extends Application { private static Context context; public void onCreate() { context = getApplicationContext()...
SOP_WebView_XML和JSON
JSON两种解析方法 JSONObject123456789101112131415161718private void parseJSONWithJSONObject(String jsonData) { try { // 定义 JASON 数组 , 将服务器返回的数据传入到了 JSONObject 对象中 JSONArray jsonArray = new JSONArray(jsonData); for(int i = 0; i < jsonArray.length(); i+...
SOP_动态权限
在程序运行的过程中由用户去授权执行某些可能是危险的的操作. 实现步骤 检查权限ContextCompat.checkSelfPermission参数 1 Context参数 2 具体的权限名字 12345ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE)判断有无权限:ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManage...
SOP_多线程编程
通过实现 Runnable 接口的实例来创建线程123456789101112131415161718192021222324252627282930313233343536373839404142class RunnableDemo implements Runnable { private Thread t; private String threadName; RunnableDemo( String name) { threadName = name; System.out.println("Creating &...
SOP_控件_Fragment
Fragment 实例1234567891011121314151617181920212223protected void onCreate(Bundle savedInstanceState) { ... // 1. 创建待添加 fragment 实例 replaceFragment(fragment1); ...}private void replaceFragment(Fragment fragment) { // 2. 获取 FragmentManager FragmentManager fragmentMana...
SOP_控件_AlertDialog
12345678910111213AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setTitle("Warning");builder.setMessage("You are forced to be offline. Please try to login again.");builder.setCancelable(false); // 设置为不可取消builder.setPositiveButton("OK", new DialogInterface.OnClickListener() ...