Android进程守护,让APP在系统内存中常驻(一)

       其实我们开发者并不想让自己做的应用变成流氓软件,但是没办法, 你的老板需要,你要不想让你的应用常驻,那咱就常驻不了了。。。所以说,言归正传。。。

      第一篇准备使用系统的服务保活。如果想看提高app的进程等级来实现应用保活,可以直接进行点击Android进程守护,让APP在系统内存中常驻(二)跳转。

       一:系统拉活service进程

           1.首先新建一个service,在服务中重写onStartCommand方法,注意要返回的值。

public class StickService extends Service {
    public StickService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }
}

         2.写完服务直接在活动中启动服务即可,这就是第一种系统拉活service进程。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //1.系统拉活service进程
        startService(new Intent(this,StickService.class));
    }
}

     二:通过jobScheduler拉活

         1.新建立一个服务,不过是继承JobSerive的。

package zj.it.bhne.androidprocess;

import android.app.job.JobParameters;
import android.app.job.JobService;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.widget.Toast;

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class JobSchedulerService extends JobService {
    public JobSchedulerService() {
    }


    @Override
    public boolean onStartJob(JobParameters params) {
        Toast.makeText(this, "梁锎你好帅!!!", Toast.LENGTH_SHORT).show();
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return false;
    }
}

        2.在活动中需要创建JobScheduler,这个需要构建一下,全都写在下面了。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //1.系统拉活service进程
        //startService(new Intent(this,StickService.class));

        //2.通过jobScheduler拉活
        startJob();

    }

    /**
     * 通过jobScheduler拉活
     */
    private void startJob() {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
            if (jobScheduler != null){
                JobInfo.Builder builder = new JobInfo.Builder(1,new ComponentName(getPackageName(),JobSchedulerService.class.getName()));
                builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
                    builder.setMinimumLatency(1000);
                }else {
                    builder.setPeriodic(3000);
                }
                jobScheduler.schedule(builder.build());
            }
        }

    }
}

         3.需要在AndroidManifest中声明下权限。

  

    三:通过bindService,通过ServiceConnection来拉活

          1.首先还是新建一个服务。

public class LiveService extends Service {
    public LiveService() {
    }

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

    public static class LocalBinder extends Binder{

    }

}

       2.在活动中调用。

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //1.系统拉活service进程
        //startService(new Intent(this,StickService.class));

        //2.通过jobScheduler拉活
        //startJob();

        //3.通过bindService,通过ServiceConnection来拉活
        bindService();
    }

    private void bindService() {
        bindService(new Intent(this,LiveService.class),connection, Context.BIND_AUTO_CREATE);
    }

    private ServiceConnection connection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {

        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

      好了。今天先写这三种,这三种属于系统直接拉活的方法。明天再写一篇吧,明天的有两种,都是用来提升app的进程等级的。有很多地方写的不完善,希望各位大佬指点。

你可能感兴趣的:(Android进程守护,让APP在系统内存中常驻(一))