Android Serviceでは他のコンポーネントにデータを返信します.
2202 ワード
1.簡単な方法で、ブロードキャストを使用します.サービスではデータを処理してブロードキャストを送信し,受信が必要な場所でブロードキャストを受信する.
2.コールバックインタフェースを使用します.コールバックを作成する場所は、データを処理する場所が多く、ここにインターネットなどを書く.次のようになります.
}
2.コールバックインタフェースを使用します.コールバックを作成する場所は、データを処理する場所が多く、ここにインターネットなどを書く.次のようになります.
public class UpdateLiveDataService extends Service {
private WriteToDbListener mWriteToDbListener;
public interface WriteToDbListener {
void onWriteFinish();
}
public void setWriteToDbListener(WriteToDbListener listener) {
mWriteToDbListener = listener;
}
/**
* Binder
*/
@Override
public IBinder onBind(Intent intent) {
return new MsgBinder();
}
public class MsgBinder extends Binder {
/**
* Service
* @return
*/
public UpdateLiveDataService getService(){
return UpdateLiveDataService.this;
}
}
...
LogUtil.i(this,"mWriteToDbListener="+mWriteToDbListener);
if (mWriteToDbListener != null) {
mWriteToDbListener.onWriteFinish();
}
}
使用回调的地方:
private void registerWriteToDbListener() { // Service, service 5.0 Intent intent = new Intent(); intent.setAction("lenovo.com.ismartvlive.UPDATE"); intent.setPackage(getPackageName()); bindService(intent, conn, Context.BIND_AUTO_CREATE); } ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { // MsgService mUpdateLiveDataService = ((UpdateLiveDataService.MsgBinder)service).getService(); mUpdateLiveDataService.setWriteToDbListener(new UpdateLiveDataService.WriteToDbListener() { @Override public void onWriteFinish() { LogUtil.i(this, "write to Db finish,isFirstTune:"+isFirstTune); if (isFirstTune) { startPlayLastTuneChannel(); } } }); } };