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();
    }
    }


  • 相关阅读:
    TCP全局同步
    pytest框架之fixture详细使用
    库操作和表操作
    封装之如何隐藏对象及封装的意义
    类的抽象
    组合
    在子类中重用父类的方法和属性
    类的继承和实现原理
    类的使用,对象的使用
    互联网协议的五层协议详解
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6957036.html
Copyright © 2011-2022 走看看