我需要点击android app图标启动后台服务。 下面是我的Activity oncreate()方法。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_executable_runner);
startService(new Intent(this, ExeRunnerService.class));
}
这是我重写的服务类,其余都是默认值。
public class ExeRunnerService extends Service{
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onCreate() {
Thread th = new Thread(new Runnable() {
public void run() {
Log.d(TAG, "Service Running");
}
});
th.start();
}
}
我没有相同的初始化代码。 但是当我启动应用程序时,我没有收到任何服务日志。
答案 0 :(得分:1)
我会在onStartCommand上放置并覆盖,并在重写的onCreate方法中调用super.onCreate();
像这样:
public class MyService extends Service {
private static boolean isRunning = false;
private Context context;
@Override
public void onCreate() {
super.onCreate();
context = this;
}
public static boolean isServiceRunning() {
return isRunning;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!isRunning) {
isRunning = true;
}
return START_STICKY;
}
Iv添加了isRunning标志,因为我经常遇到我的服务已经运行并再次初始化对象然后不是一个好主意。
答案 1 :(得分:0)
您的服务正在调用,但问题在于线程使用以下创建方法的服务代码替换您的代码
public void onCreate()
{
Log.d("Run", "Service Running");
new Thread(new Runnable()
{
public void run()
{
Log.d("Run", "Service Running");
}
}).start();;
}