我有一个关于启动服务的基本问题。
我有一个服务,它启动一个线程来解析文件;一旦完成此操作,就会通过发送消息将其传达回来。
现在,在服务的处理程序中收到此消息后,我想启动另一个服务。
由于 Handler 没有上下文,我如何启动另一个服务?
一种选择是发送本地广播并接收相同的广播并启动服务,但是还有其他方法吗?
我有一个关于启动服务的基本问题。
我有一个服务,它启动一个线程来解析文件;一旦完成此操作,就会通过发送消息将其传达回来。
现在,在服务的处理程序中收到此消息后,我想启动另一个服务。
由于 Handler 没有上下文,我如何启动另一个服务?
一种选择是发送本地广播并接收相同的广播并启动服务,但是还有其他方法吗?
只需制作一个需要 Context 的自定义处理程序:
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 上下文。
您可以通过这种方式从 Handler 启动服务,而无需使用对 Context 的引用:
Intent serviceIntent = new Intent();
serviceIntent.setAction("your.package.UpdaterServieName");
startService(serviceIntent);
我希望我理解你的问题,这个回复可能对你有用。
对不起我的英语不好。
会是这样的
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();
}
};
};