Android Service 不被杀死并提高优先级

Android Service 不被杀死有两种思路,一种是将APP设置为系统应用。还有一种是增强service的生命力。即使屏幕背光关闭时也能执行。

因为设置为系统应用须要root。所以一般使用后一种方法:

1.Androidmanifest.xml权限许可:-----------------------------------------------------------------

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

<service android:name="com.xx.MyService" ></service>

2.主Activity:----------------------------------------------------------------------------------------

private ServiceConnection conn=null;

private PowerManager.WakeLock mwl;

@Override

protected void
onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mian);

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

mwl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyTag");

mwl.acquire();//屏幕关闭后保持活动

Intent service=new Intent(this,MyService.class);

startService(service);

conn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) { }

@Override

public void onServiceConnected(ComponentName name, IBinder service) { //……}

};

bindService(service, conn, BIND_AUTO_CREATE);//绑定服务

}

@Override

protected void onDestroy() {

//mwl.release();//释放

unbindService(conn);//解绑

super.onDestroy();

}

------------------------------------------------------------------------------------------------------

Android Service 提高优先级:

public class MyService extendsService{
@Override
public IBinder onBind(Intent intent) {
Notification notification = new Notification(R.drawable.ic_launcher, "title",System.currentTimeMillis());
        PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
        notification.setLatestEventInfo(this, "Service",  "service is running", pintent);
        startForeground(0, notification);//设置最高级进程。 id 为 0状态栏的 notification 将不会显示
return new MyBinder();
}
class MyBinder extendsBinder{ //……  }
@Override
public void onDestroy() {
stopForeground(true);//取消最高级进程
super.onDestroy();
}
}
时间: 2024-10-08 10:44:32

Android Service 不被杀死并提高优先级的相关文章

保证Android后台不被杀死的几种方法

由于各种原因,在开发Android应用时会提出保证自己有一个后台一直运行的需求,如何保证后台始终运行,不被系统因为内存低杀死,不被任务管理器杀死,不被软件管家等软件杀死等等还是一个比较困难的问题.网上也有各种方案,笔者经过自己试验学习尝试总结了3中还可以的方式,记录如下.并不是绝对保证,不过确实提高了存活率不少. 方式一:service绑定通知栏成为前台服务 android中实现后台一般通过service方式,但系统本身会在内存低等情况下杀死service.通过将service绑定到notifi

Android Service 深度解析(1)

Android Service 深度解析(1) 这段时间我重新对Android基础进行了学习,还是先从官方文档开始,做了关于Service的文档翻译,熟悉了关于Service的知识点.但是在用的时候还是有很多需要注意的地方,需要把这些知识点联系起来,因此有了这篇文章.我将主要从以下几个方面对Service类进行深度解析: 1. Service的生命周期(看起来简单,实际上很复杂的): 2. 绑定运行Service(Bound Service)的多种形式实现及其使用: 主要包括本地Service继

Android Service 服务(一)—— Service

一. Service简单介绍 Service是android 系统中的四大组件之中的一个(Activity.Service.BroadcastReceiver.ContentProvider),它跟Activity的级别差点儿相同,但不能自己执行仅仅能后台执行,而且能够和其它组件进行交互.service能够在非常多场合的应用中使用,比方播放多媒体的时候用户启动了其它Activity这个时候程序要在后台继续播放,比方检測SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在

【Android】怎样使一个Android应用不被杀死?(整理)

[转载]怎样使一个Android应用不被杀死?(整理) 原文地址:怎样使一个Android应用不被杀死?(整理)作者:飘锦丹枫 参考:http://blog.csdn.net/windskier/article/details/6560925http://blog.csdn.net/zmyde2010/article/details/6756368http://blog.sina.com.cn/s/blog_514048cb0100wi2j.html 方法:对于一个service,可以首先把它设

Android Service使用详解

Service是Android系统中的四大组件之一,主要有两个应用场景:后台运行和跨进程访问.Service可以在后台执行长时间运行操作而不提供用户界面,除非系统必须回收内存资源,否则系统不会停止或销毁服务.服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行. 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC) 需要注意的是,Service是在主线程里执行操作的,可能会因为执行耗时操作而导致ANR 一.基础知识 Service可以分为以下三种形式

android service常驻内存的一点思考

我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4.3和android5.0上面测试了LBE的清理内存功能,看看是不是会达到不被清理的目的,发现在这两个版本上还是有一些区别的 先说一下我们的代码,我们的service在单独的进程中,在service中调用JNI的代码,然后fork出一个进程,然后让我们的service进程和fork出来的子进程一直运

Android service进程保护

应用进程保活基本就是围绕两个方面来展开: 1 尽量保证进程不被杀死. 2 进程被杀死后复活.细分如下: 1)Service重启 2)进程守护 3)Receiver触发 4) AlarmManager or JobScheduler循环触发 5)与系统Service捆绑-–可以不考虑,了解即可 下面将围绕这几点展开讨论. 一,基本概念 1.什么才叫应用进程保活 应用进程保活可以理解为应用位于后台永远不能被杀死.这里的可以简略地分为两种情况,第一种是当系统资源紧俏的时候或者基于某种系统自身的后台运行

Android SERVICE后台服务进程的守护

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务.而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉. 在早些时候,我们可以通过在 1. service中重写onStartCommand方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动 public int onStartCommand(Intent intent, int flags, int

Android Service使用简单介绍

作为一个android初学者,经常对service的使用感到困惑.今天结合Google API 对Service这四大组件之一,进行简单使用说明. 希望对和我一样的初学者有帮助,如有不对的地方,也希望及时指出. Service :就是长时间运行在后台,没有用户界面的一个应用组件.即便,用户切换到其他的应用,Service依然可以在后台运行. 除此之外,一个组件可以将自己和Service进行绑定,甚至是进程间通信.例如,Service可以处理网络请求,播放音乐, 处理I/O操作,和Content