0

私はこのようなクラスを持っています:

public class ExpandableListAdapter extends BaseExpandableListAdapter {

このクラスからサービスを実行したい。しかし、私が知っているように、サービスはからしか実行できませんActivitys。それで、解決策は何ですか?

サービスを開始して別のクラスから制御するにはどうすればよいですか?

4

2 に答える 2

1

しかし、私が知っているように、サービスはアクティビティからのみ実行できます

それは真実ではない。サービスを実行するには、通常はアクティビティへの参照であるコンテキストが必要です。

したがって、ExpandableListAdapter 内では、コンストラクターがアクティビティのインスタンスを受け取ることを確認するだけです。

public ExpandableListAdapter(Context context){
    mContext = context;
}

// somewhere else
mContext.startService(theIntent);
于 2012-04-18T18:04:10.597 に答える
0

ほとんどのアダプターにはコンテキストがあるため、コンテキストを返す getContext() を呼び出すことができます。このアダプターにはコンテキストがないため、コンテキストを取得してそのスーパーを呼び出すカスタム コンストラクターが必要です。渡したコンテキストを使用して、アクティビティの場合と同じようにstartService(Intent intent)を呼び出すことができます。

于 2012-04-18T18:04:24.053 に答える