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


  • 相关阅读:
    Yahoo! 35条网站性能优化建议
    常见排序
    文件上传于拖拽
    离线web存储
    【前端学习】【jQuery选择器】
    【前端学习】【CSS选择器】
    【疯狂Java讲义学习笔记】【流程控制与数组】
    【疯狂Java讲义学习笔记】【数据类型与运算符】
    【疯狂Java学习笔记】【理解面向对象】
    【疯狂Java学习笔记】【第一章:Java语言概述】
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6957036.html
Copyright © 2011-2022 走看看