1

我有一个关于启动服务的基本问题。

我有一个服务,它启动一个线程来解析文件;一旦完成此操作,就会通过发送消息将其传达回来。

现在,在服务的处理程序中收到此消息后,我想启动另一个服务。

由于 Handler 没有上下文,我如何启动另一个服务?

一种选择是发送本地广播并接收相同的广播并启动服务,但是还有其他方法吗?

4

3 回答 3

0

只需制作一个需要 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 上下文。

于 2013-07-12T08:43:12.030 回答
0

您可以通过这种方式从 Handler 启动服务,而无需使用对 Context 的引用:

Intent serviceIntent = new Intent();
serviceIntent.setAction("your.package.UpdaterServieName");
startService(serviceIntent);

我希望我理解你的问题,这个回复可能对你有用。

对不起我的英语不好。

于 2013-07-12T08:45:31.873 回答
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();
 }          

    };
};
于 2013-07-12T08:40:04.160 回答