Android程序如何自启动

 1、开机自启动。 这是最简单的自启动方式,只需要在Manifest.xml文件中,注册监听 android.intent.action.BOOT_COMPLETED 事件并且授权。然后新建监听器监听广播。 Manifest.xml文件注册内容如下:

<uses-permission android.name = "android.permission.BOOT_COMPLETED"/>

<receiver android:name = ".*Activity"
      <intent-filter>
            <action android:name = "android.intent.action.BOOT_COMPLETED"/>
      <intent-filter>
</receiver>

然后新建监听器

 public class myBroadcastReceiver extends BroadcastReceiver
{
    public void onReceive(Context context, Intent intent)
    {
	if(intent.getaction().equals(“android.intent.action.BOOT_COMPLETED))
	{
	     //可以触发自定义事件
	     intent wakeIntent = new Intent();
	     //从receiver中启动activity必须得加此标记
	     wakeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	     wakeIntent.setclass(context, MainActivity.class);
	     context.startActivity(wakeIntent);
	}	
    }
}

 2、android的进程有六个优先级别,分别是:一、前台进程 二、可见进程 三、次要服务进程 四、后台进程 五、内容供应节点六、空进程。通过在Mainfest中设置应用属性为 android:persistent = "true",可以将应用提升为系统级进程,etting->application里面也会屏蔽掉stop操作。但需要将应用的apk放到 system/app/目录下安装,自己试过后发现,system/app/目录下无法手动修改。因此这步没有成功。
  3、完全让进程不被kill是不可能的,我们可以通过一些操作,使进程被kill几率变小
1)后台操作采用运行前台Service形式,因为一个运行着service的进程比一个运行着后台activity的等级高
2)按back键使得进程中的activity在后台运行而不是destroy,需要载back按键
3)依赖于其他优先级高的进程
  4、监听系统其他广播,如解锁。

uses-permission android.name = "android.permission.USER_PRESENT"/>
<receiver android:name = ".*Activity" 
      <intent-filter> 
             <action android:name = "android.intent.action.USER_PRESENT"/> 
      <intent-filter>
</receiver>

或者监听电量改变事件,但实验中在xml文件中直接注册并没有效果,需要在MainActivity中新建一个service,并在service的onStartCommand中通过registerReceiver(bcBroadcastReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED))注册广播接收器; 使用unregisterReceiver(bcBroadcastReceiver)来注销广播接收器。
 5、进程守卫。不明觉厉,最简单的就是在service1的onDestroy方法里写上启动service2的代码,在Service2的onDestroy中写上启动Service1的代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中让程序开机自动启动,通常有两种方式: 1. 使用广播接收器 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 BroadcastReceiver,在接收到 `android.intent.action.BOOT_COMPLETED` 广播时启动你的程序。 示例代码: ```java public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent bootIntent = new Intent(context, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(bootIntent); } } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <receiver android:name=".BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> ``` 2. 使用系统服务 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 Service,在 `onCreate()` 方法中启动你的程序。 示例代码: ```java public class BootService extends Service { @Override public void onCreate() { super.onCreate(); Intent bootIntent = new Intent(this, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(bootIntent); } @Override public IBinder onBind(Intent intent) { return null; } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <service android:name=".BootService"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </service> ``` 注意:使用第二种方式需要在 Android 5.0 以上版本上进行测试,因为 Android 5.0 以下版本不支持在 Service 中启动 Activity。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值