我们的广告系统,为了防止被客户关闭,必须要每隔一段时间启动一次。
创建一个Service:
最关键的是onStartCommand 里面返回的Service.START_STICKY,
return Service.START_STICKY
package com.wbm.app.servicetest.servic;
import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import java.util.List;
public class StartService extends Service implements Runnable{
private Thread thread;
public StartService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
//throw new UnsupportedOperationException("Not yet implemented");
return null;
}
@Override
public void onCreate() {
super.onCreate();
//onCreate的时候创建初始化
thread = new Thread(this);
thread.start();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// return super.onStartCommand(intent, flags, startId);
//如果服务并停止了,重新生成一个新的
if(thread.isInterrupted()){
thread = new Thread(this);
thread.start();
}
return Service.START_STICKY;
}
@Override
public void run() {
int i=0;
while (true){
try {
//每10秒钟进行一次输出
Thread.sleep(10000);
//Toast.makeText(getApplicationContext(),"服务启动"+i++,Toast.LENGTH_LONG).show();
Log.d("kodulf", "服务启动"+i++);
openApp("com.wbm.app.tvad");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// private void openApp(View v, String packageName) {
private void openApp(String packageName) {
//Context context = v.getContext();
PackageInfo pi = null;
//PackageManager pm = context.getPackageManager();
PackageManager pm = getPackageManager();
try {
pi = pm.getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);
List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(cn);
startActivity(intent);
}
}
}
<service
android:name=".servic.StartService"
android:enabled="true"
android:exported="true"></service>