4.Linux 内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。
开机自动运行程序!
Android实现开机自动运行程序2009-12-31 15:01:17.0 开机 自动 运行 程序 有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don''t call me, I''ll call you back!”总结Android框架,真是说到点子上了。理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解。
使用场景:手机开机后,自动运行程序,在屏幕上显示"Hello. I started!"字样。
背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Don''t call me, I''ll call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver。
代码解析:
1、界面Activity:SayHello.java
package com.ghstudio.BootStartDemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SayHello extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello. I started!");
setContentView(tv);
}
}
这段代码很简单,当Activity启动时,创建一个TextView,用它显示"Hello. I started!"字样。
2、接收广播消息:BootBroadcastReceiver.java
package com.ghstudio.BootStartDemo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootBroadcastReceiver extends BroadcastReceiver {
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)){
Intent sayHelloIntent=new Intent(context,SayHello.class);
sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(sayHelloIntent);
}
}
}
该类派生自BroadcastReceiver,覆载方法onReceive中,检测接收到的Intent是否符合BOOT_COMPLETED,如果符合,则启动SayHello那个Activity。
3、配置文件:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ghstudio.BootStartDemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SayHello"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
</manifest>
注意其中粗体字那一部分,该节点向系统注册了一个receiver,子节点intent-filter表示接收android.intent.action.BOOT_COMPLETED消息。不要忘记配置android.permission.RECEIVE_BOOT_COMPLETED权限。
完成后,编译出apk包,安装到模拟器或手机中。关机,重新开机。
如果是系统进程的话,需要加入init配置文件来启动,随着linux启动而启动
注:还有一些关于Activity之间的数据传递与Intent的具体应用、Activity的生命周期等老师的PPT上已经都有了。具体的笔试题目前只有华为有笔试题,并且也只是一般的选择题,其余公司都是一些JAVA的基础题,只会在面试的时候问一些关于Android的题,并且有的公司经常问一些关于底层C库的调用与Android隐式API的题。
分享到:
相关推荐
Android开机自动运行一个程序教程
eclipse 下运行通过 android 开机运行app
Android安卓app 让程序开机自动运行APP.zip
通过接收系统广播,确定手机进入开机状态,调用apk,使其自动运行。
可以实现安卓开机时自动启动开发的应用程序!此demo直接导入运行即可
开机自动根据包名检测APP运行状态 ,使app一直运行在前台,我们用一个后台服务来监测这个app的运行情况。如果这个app被人为退出了,或者遇到bug崩溃了,就要重新启动,免得丢失数据。
需要多点好多步骤,下面我通过自己制作的插件来实现开机倒计时默认进入安卓 1. 首先需要打开设置服务里的允许本地控制,并且重启生效, 2. 编写自动启动脚本 storage/.config/autostart.sh 制作插件在/storage/....
最近在找一些开机自启动,方便自动化运行的布署 经过测试,发现使用按键小精灵的方式,使用KP打包之后,运行有异常提示,并不适用于目前测试的系统Android 10,12,网上找了一圈,好像10以上,系统更新的方式,后期有空了再...
里面涉及到执行Root命令、获取Android开机启动列表、启用主Activity,开启开机自动运行、禁用360进程与服务、动态创建一个优先级最高的短信广播接收者、动态创建一个关机广播接收者。以下分别说明三者的实现: 短信...
有的服务做的更绝,当用户在运行的服务中手动停止该服务以后,过了一段时间,服务又自动运行了。虽然,从用户的角度来说,这种方式比较流氓。但是,从程序员的角度来说,这是如何做到的呢?经过研究,我发现有一种...
后台保持运行,开机后自动启动设定好的APK的DEMO.zip安卓程序项目源码资源下载后台保持运行,开机后自动启动设定好的APK的DEMO.zip安卓程序项目源码资源下载 1.适合学生做毕业设计用 2.适合程序员学习研究用 3.适合...
3.24 判断手机操作系统版本是否允许运行程序 72 3.25 两个不同的程序彼此调用 75 3.26 指定安装应用程序迁移至sd卡 78 3.27 手机动态layout主题随手势物换迁移 79 第4章 史上超豪华的手机控件 84 4.1...
3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...
3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...
3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...
运行$ adb-wifi您可以将adb-wifi添加到启动应用程序中。 将设备连接到计算机并授权去污。 注意:如果设备关闭(电池等),则需要再次将设备插入计算机,因为adb需要打开tcpip port ! 如果设备已扎根,则可以使用...
3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...
在我的电视盒子上试了试 发现 偶尔会出现 开机不自动运行的情况 换个思路把 用 <categoryandroid:name="android.intent.category.HOME"/> 替代 电视盒子自带的 桌面 开启AP热点后再 自动运行盒子自带的桌面 [java]...