Anroid5.0 이상 프로세스 활성화 방안(피살된 앱을 직접 조정할 수 있음)
4222 단어 Android
제1종
픽셀 액티브 활성화를 엽니다. 액티브 2개가 동시에 죽으면 이 방안은 선택할 수 없습니다.
두 번째
null의 notification을 보내서 프로세스 우선순위를 높인다. 쿠거우 음악 알림판처럼 강제로 내놓을지 죽일지
제3종
jobs 서비스 jobsheduler의 사용native는 이 방안이 app 프로세스를 강제로 죽인 후에 새로운 app 프로세스를 끌어올리는 것을 깨우는 데 사용됩니다
마지막으로 2, 3을 선택해 보직을 진행한다.
간단히 소개jobs 서비스
jobs 서비스 종류는 두 가지 추상적인 방법이 있습니다. onstartjob (), onstopjob () 는 이 서비스를 호출할 때 권한이 필요합니다.
android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
android:name=".MyJobService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE"
/>
onstopjob () 는 jobfinish () 를 호출한 후에 호출합니다.프로세스를 죽일 때 온startjob () 방법을 사용합니다. 로그캣에서 로그를 볼 수 있습니다.또는 onstartjob () 에서 토스트의 일부 문자를 사용합니다.하지만 시간이 많이 걸리는 조작은 할 수 없다.전기 소모가 부족하다.
내 서비스(직접 죽은 앱을 조정할 수 있음)
/** * Created by sunxx on 2018/3/13. */@TargetApi(Build.VERSION_CODES.LOLLIPOP)public class MyJobService extends JobService { @Override public void onCreate() { super.onCreate();@Override public int on Start Command(Intent intent, int flags, int start Id) {Log.i("cvca", "onStart Command"시작), start Job Sheduler(), return START STICKY;public void start Job Sheduler () {try {Job Info. Builder builder = new Job Info. Builder (1, new ComponentName (getPackageName (), My Job Service.class.getName ())));/이 방법은 설정된 이 시간 동안builder.setPeriodice (100) 작업을 최대 한 번만 수행할 수 있습니다.;//장치가 다시 시작된 후에builder를 계속 실행해야 하는지 여부입니다.setPersisted(true); JobScheduler jobScheduler = (JobScheduler) this.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(builder.build()); } catch (Exception ex) { ex.printStackTrace(); } } @Override public boolean onStartJob(JobParameters params) { boolean isLocalServiceWork = isServiceWork(this, "com.mapbar.test.savelife.TestServce"); if (isLocalServiceWork){ Log.i("cvca","on"); }else{ Log.i("cvca","off"); Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.aa.test.savelife"); startActivity(LaunchIntent); } Toast.makeText(this,"ok",Toast.LENGTH_SHORT).show(); if (isLocalServiceWork){ Log.i("cvca","on"); }else{ Log.i("cvca","off"); } return true;@Override public boolean onStopJob(JobParameters params) {Log.i("cvca", "onStopJob 테스트"), return true;}//서비스가 public boolean isServiceWork(Context mContext, String ServiceName) {boolean isWork = false, Activity Manager myAM = (Activity Manager) mContext.getSystemService(Context.ACTIVITY SERVICE), List = myAM.getRunning Services(100); if (myList.size() <= 0) { return false; } for (int i = 0; i < myList.size(); i++) { String mName = myList.get(i).service.getClassName().toString(); if (mName.equals(serviceName)) { isWork = true; break; } } return isWork; }}
자세한 내용은http://blog.csdn.net/u013263323/article/details/56285475
데모 필요하시면 메일로 남겨주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.