編輯:關於Android編程
安卓初始化語言包括四種類型的語句,它們是:
動作 Action命令 Command服務 Service選項 Option所有語句都是面向行的,以空格分割每行包含的若干token。C風格的反斜槓可以用於token中插入空格,雙引號同樣可以避免空格將文本分為多個token。反斜槓是一行的最後一個字符時,將用於續行(PS:下一行也屬於該句)。
以#開頭的行(前面有空格也是允許的)是注釋。
Action和Service隱式定義了一個新的section(段),所有Command或Option屬於最近定義的section。在第一個section之前的Command或Option將被忽略。
Action和Service有唯一的名字。如果有第二個Action或Service定義為和一個已存在的(Action或Service)同名,它將被作為錯誤忽略掉。
Action是有名字的一系列的命令。Action有一個tirgger(觸發器),用於決定該Action應在何時執行。當一個事件發生並匹配了一個Action的trigger,相應的Action將被添加到即將執行(to-be-executed)隊列的尾部(除非她已經在隊列上了)。
每個action在隊列中順序排列,每個action中的command將會順序執行。init在執行command的過程中還有執行其他活動(設備節點的創建/銷毀,屬性設置,進程重啟)。
Action具有以下格式:
on
Service是init加載的和是退出重啟的(可選)程序。Service具有如下格式:
service[ ]*
Option是Service的修改者。它們影響著init如何及何時運行Service。可用的Option有:
critical
這是十分關鍵的服務。如果在四分鐘內超過四次,手機將會重啟並進入recovery模式。
disabled
這種類型的服務不會自動啟動。它必須明確的使用名字啟動。
setenv
設置環境變量
socket
創建一個名為/dev/socket/
user
在執行該service前改變用戶名,默認為root。如果你的進程請求Linux的特殊能力,就不要用這個命令。需以進入進程仍是root->請求特權->切換到你期望的uid來替換此法。
group
在執行該service前改變組名。第一個以後的附加組名用於設定進程的附加組(通過setgroups())。當前默認是root。
seclabel
在執行服務之前改變安全級別。主要用於從rootfs執行服務,比如ueventd, adbd. 在system分區上可以用基於文件安全級別的策略定義的transition,如果沒有指定且沒有定義策略的transition,默認是init上下文。
Change to securitycontext before exec'ing this service.
Primarily for use by services run from the rootfs, e.g. ueventd, adbd.
Services on the system partition can instead use policy-defined transitions
based on their file security context.
If not specified and no transition is defined in policy, defaults to the init context.
oneshot
退出不重啟服務(名副其實,一次性)。
class
為一service指定一個類名,所有有相同類名的service可以一同啟動或停止。如果沒有用class選項指定類名,該service屬於default。
onrestart
在service重啟的時候執行。
觸發器是可以用來匹配一些種類的事件和用來引發一個行為發生的字符串。
boot
這是init啟動後最先被觸發的trigger(在Init.conf被加載以後)。
這種形式額trigger(觸發器)屬性
device-added-
device-removed-
這種形式的Triggers(觸發器)會在設備節點
service-exited-
這種形式的Triggers會在指定的service退出時被觸發。
exec
創建和執行程序(
export
在全局環境變量中設在環境變量
ifup
啟動網絡接口
import
解析一個init配置文件,擴展當前配置。
hostname
設置主機名。
chdir
改變工作目錄。
chmod
更改文件訪問權限。
chown
更改文件的所有者和組。
chroot
改變進程的根目錄。
class_start
啟動該類service所有尚未運行的服務。
class_stop
停止所有該類正在運行的service。
domainname
設置域名。
enable
改變一個disable的service為enabled,就像他們好像沒有明確的關閉一樣。如果該service已經應該運行,它會立刻啟動。典型的用法是,當bootloader設定一個表示特定的變量,service應該啟動。比如:
on property:ro.boot.myfancyhardware=1 enable my_fancy_service_for_my_fancy_hardware
遞歸的恢復
setcon
需求:Activity(fragment)跳轉的時候當前界面裂開,上下各自拉出手機屏幕,之後跳轉到相對應的Activity.整體效果圖如下思路:1,在當前Activity
首先給出跑馬燈效果圖 中間的色塊是因為視頻轉成GIF造成的失真,自動忽略哈。大家知道,橫向的跑馬燈android自帶的TextView就可以實現,詳情請百度【A
關於Android Studio 在2013 Google IO大會上發布的全新IDE Android Studio相信各位猿們並不陌生,截止2014的Goog
在開發Android應用時,保存數據有這麼幾個方式, 一個是本地保存,一個是放在後台(提供API接口),還有一個是放在開放雲服務上(如 SyncAdapter 會是一個不