zoukankan      html  css  js  c++  java
  • 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();
    }
    }


  • 相关阅读:
    起泡排序引申出的问题
    关于NPC和NP-Hard问题
    我的书单(更新中)
    OpenCV2学习笔记03:Qt中配置OpenCV环境
    Ubuntu 14.04为浏览器添加Flash插件
    CSS3基础
    HTML5进阶
    拖拽上传及读取文件实现
    生产者消费者模型
    进程
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6957036.html
Copyright © 2011-2022 走看看