android监控上传小demo之第一步 自启动运行

 

有个小计划练手,就是做一个拍照,之后自动上传到某个服务器上的小demo

思路是这样的,

拍照的时候加一个标志位表示这个照片要同步到网络上且还未上传。

之后系统定期检查是否有上传任务,若有,则执行上传,若没有,则等待至下一次检测点

 

ok,转化为程序思路,具体如下,

为实现自启动,需要捕获我们的设备运行信息,可以使用BroadcastReceiver这个东西

但是我们启动的是alarmManager 

为什么不直接用上传的Service,之后在Service 内部实现一个循环等待的功能?

因为android机制当中,里面的wait 是指你在active 的时候的时间,如果程序本身是inactive或者被pause了的话,等待的时间就会不准。同时,如果一直监听,则service是不会被回收的,这点很不爽。

 

下面就是这个demo的第一步,捕获系统开机,自动运行程序

 

android认为这个事情比较重要,所以要在mainfest 中授权,

授权方式如下

在manifest 根节点下直接添加权限节点

 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

 

image

 

在有了权限之后,我们还要写一个receiver指定谁接受这个东西

照例,我们需要像activity一样的在mainfest 里指定他  

同时这里因为要捕获系统的启动,所以说需要在intent-filter设置一下  详情如下所示

 

image

 

之后OnBootReceiver 的代码也很简单,

package info.atpking.cityHelper;

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log;

public class OnBootReceiver extends BroadcastReceiver { 
    private static final String LOGTAG = "ATPKINGLOG"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
        Log.v(LOGTAG,"我已随系统启动了哇亲"); 
        // 在这里接下来我们要开启AlertManager 了 
    }

}

 

之后就可以在虚拟机上跑了。

注意,虚拟机需要首先加载一次这个程序之后才能随系统开机运行

 

直接点运行,出来新建项目时默认的activity后,这个时候系统已经将其receiver 注册了

关掉虚拟机,之后再启动虚拟机,我们就可以在LogCat 上看到我们的开机运行了。 

 

 

image

 

 

娇妻如云 http://www.510h.com

剑道独尊 http://www.95wu.com

召唤美女军团 http://www.7wg.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 平台上的自启动和保活功能是指应用程序在设备重启后能够自动启动,并且在后台保持长时间运行的能力。下面我将以一个实现示例来说明如何实现自启动和保活。 首先,我们需要在 AndroidManifest.xml 文件中注册一个接收设备启动完成广播的广播接收器(BroadcastReceiver),如下所示: ```xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application> <!-- ... --> <receiver android:name=".BootCompletedReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> ``` 然后,我们需要创建一个 BootCompletedReceiver 类来处理设备启动广播: ```java public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // 在设备启动完成时执行需要自启动的操作 // 例如启动一个服务、开启一个前台服务等 Intent serviceIntent = new Intent(context, YourService.class); context.startService(serviceIntent); } } } ``` 接下来,我们需要实现保活功能。一种常见的做法是通过在前台创建一个空的透明 Activity,然后在该 Activity 的 onCreate() 方法中启动一个具备保活能力的服务。 ```java public class KeepAliveActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置 Activity 透明度为 0,使其不可见 Window window = getWindow(); window.setGravity(Gravity.LEFT | Gravity.TOP); WindowManager.LayoutParams params = window.getAttributes(); params.x = 0; params.y = 0; params.width = 1; params.height = 1; window.setAttributes(params); // 启动一个具备保活功能的服务 Intent serviceIntent = new Intent(this, KeepAliveService.class); startService(serviceIntent); } } ``` 最后,我们需要在 AndroidManifest.xml 文件中注册这个保活 Activity: ```xml <activity android:name=".KeepAliveActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:excludeFromRecents="true" android:taskAffinity="" android:lockTaskMode="if_whitelisted" android:screenOrientation="portrait" /> ``` 通过以上步骤,我们就可以实现 Android 自启动和保活的功能了。当设备启动完成时,系统会发送 `ACTION_BOOT_COMPLETED` 广播,我们的应用程序将接收到该广播并启动自定义的服务,从而实现自启动。同时,在保活 Activity 的 onCreate() 方法中启动保活服务,可以使应用程序在后台长时间保持运行状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值