文档章节

杀不死的service 开机自启

恒源祥
 恒源祥
发布于 2016/09/28 17:56
字数 193
阅读 22
收藏 2

activity:

public class MainActivity extends Activity
{
    private Button startButton = null;
    private Button stopButton = null;
    private Intent intent = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //get instance
        startButton = (Button) findViewById(R.id.startButton);
        stopButton = (Button) findViewById(R.id.stopButton); 
        intent = new Intent(MainActivity.this, MyService.class);
        
        //set start service button click listener
        startButton.setOnClickListener(new OnClickListener()
        {
            
            @Override
            public void onClick(View view)
            {
                startService(intent);
            }
        });
        
        //set stop service button click listener
        stopButton.setOnClickListener(new OnClickListener()
        {
            
            @Override
            public void onClick(View view)
            {
                stopService(intent);
            }
        });
    }
}

 

receiver:

public class BootBroadcastReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
        {
            Intent startServiceIntent = new Intent(context, MyService.class);
            startServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startService(startServiceIntent);
        }
    }
}

 

service(重点):

public class MyService extends Service
{
    AlarmManager mAlarmManager = null;
    PendingIntent mPendingIntent = null;
    
    @Override
    public void onCreate()
    {
        //start the service through alarm repeatly
        Intent intent = new Intent(getApplicationContext(), MyService.class);        
        mAlarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        mPendingIntent = PendingIntent.getService(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
        long now = System.currentTimeMillis();
        mAlarmManager.setInexactRepeating(AlarmManager.RTC, now, 60000, mPendingIntent);
        
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) 
    {
        Toast.makeText(getApplicationContext(), "Callback Successed!", Toast.LENGTH_LONG).show();
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent)
    {
        return null;
    }

    @Override
    public void onDestroy() 
    {
        
        super.onDestroy();
    }
}

© 著作权归作者所有

恒源祥
粉丝 16
博文 109
码字总数 97221
作品 0
深圳
Android工程师
私信 提问
安卓系统,在安全软件中很多程序会标记开机自启和后台自启,这个后台自启是怎么设置?

我写的app在上面只标记了 开机自启,app里也有独立进程service和守护service互相唤醒什么的。 别的软件既然显示了后台自启,肯定是声明了类似开机自启那种配置,才可以被看到,这个是怎么实现...

noday
2016/07/07
217
2
centos7 配置NTP服务器

NTP服务器是为了同步时钟周期,防止应为时钟的不一致引起的错误,常用与集群环境中。 集群如下: server: Hortonworks01 client: Hortonworks02 Hortonworks03 目的是集群时间同步到Hortonw...

chenguangchun1993
2018/01/03
0
0
centos 7 之systemd

systemd新特性: 系统引导时实现服务并行启动; 按需激活进程; 系统状态快照; 基于依赖关系定义服务控制逻辑; 核心概念: unit systemd的单元 配置文件进行标识和配置: 文件中主要包含了系统服...

limingyu0312
2017/07/30
0
0
Systemd 学习笔记

这两天在配单机多redis实例,发现配好之后在ubuntu15.10上无法自启,看来用sysvinit的方式不灵了,顺便研究了一下systemd,发现这东西挺好使的,不但支持服务自启,还支持job,可以替换cront...

jim19770812
2016/02/13
216
0
kali linux 2.0下安装ssh和metasploit

原址 从kali官网下载的kali系统的压缩包(已经装好的vmware虚拟机的压缩包),一般我比较习惯使用ssh客户端连接后使用。 一、开启ssh: kali linux2.0已经安装好ssh,但是不会自动启动,而且...

u010164190
2018/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android面试常客之Handler全解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fnhfire_7030/article/details/79518819 前言:又到了一年...

shzwork
28分钟前
4
0
position sticky 定位

本文转载于:专业的前端网站➫position sticky 定位 1、兼容性 https://caniuse.com/#search=sticky chrome、ios和firefox兼容性良好。 2、使用场景 sticky:粘性。粘性布局。 在屏幕范围内时...

前端老手
35分钟前
4
0
CentOS 7 yum 安装 PHP7.3 教程

参考:https://www.mf8.biz/centos-rhel-install-php7-3/ 1、首先安装 EPEL 源: yum install epel-release 安装 REMI 源: yum install http://rpms.remirepo.net/enterprise/remi-release......

dragon_tech
50分钟前
4
0
Linux物理网卡聚合及桥接

Linux内部实现的bridge可以把一台机器上的多张网卡桥接起来,从而把自己作为一台交换机。同时,LInux bridge还支持虚拟端口,即桥接的不一定都是物理网卡接口,还可以是虚拟接口。目前主要表...

xiangyunyan
50分钟前
4
0
一起来学Java8(一)——函数式编程

在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函...

猿敲月下码
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部