我有一个关于启动服务的基本问题。
我有一个服务,它启动一个用于解析文件的线程;完成后,通过发送消息来传达回传。
现在,在服务的处理程序中收到此消息后,我想启动另一个服务。
由于Handler没有Context,我该如何启动另一个服务?
一种选择是发送本地广播并接收相同并启动服务,但还有其他方法吗?
答案 0 :(得分:0)
这将是这样的
public int onStartCommand(Intent intent, int flags, int startId)
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mainActivity);
Message msg = new Message();
msg.what = 0;
mHandler.sendMessage(msg);
}
Handler mHandler = new Handler()
{
public void handleMessage(android.os.Message msg) {
if(msg.what==0)
{
StartService(new Intent(Myservice.this, secondservice.class));
finish();
}
};
};
答案 1 :(得分:0)
只需创建一个需要上下文的自定义处理程序:
public class CustomHandler extends Handler {
Context mContext;
public CustomHandler(Context context) {
mContext = context;
}
public void handleMessage(Message msg) {
if(msg.what == ID_STARTSERVICE) {
Intent i = new Intent...
mContext.startService(i);
}
}
}
但请确保传递ApplicationContext(new CustomHandler(getApplicationContext()))而不是Activity上下文。
答案 2 :(得分:0)
您可以从Handler启动服务,而无需以这种方式引用Context:
Intent serviceIntent = new Intent();
serviceIntent.setAction("your.package.UpdaterServieName");
startService(serviceIntent);
我希望我理解你的问题,这个回复对你有用。
抱歉我的英文。