私はサービスを(スマートウォッチで)作成しようとしていますが、ユーザーがそのアプリケーションを使用していなくても永遠に実行する必要があります。主な目的は、サービスを音声認識に使用することです。だから、ユーザーが特定の単語を言うたびに、アプリはGoogleの声のように応答する必要があります。サービスをAndroidで永久に実行する方法
しかし、テスト目的では、Logに整数を出力していますが、一度だけ実行します。サービスが永遠に実行されていないことを意味します。
マイサービスコード:
public class VoiceService extends Service {
private IBinder mBinder = new VoiceBinder();
int i = 1;
public VoiceService() {
}
@Override
public void onCreate() {
super.onCreate();
updateLog();
}
public void updateLog() {
++i;
Log.v("DATA", Integer.toString(i));
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return mBinder;
}
//inner helper class
public class VoiceBinder extends Binder {
//constructor
VoiceService getService() {
return VoiceService.this;
}
}
}
マイMainActivityコード:
serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
VoiceService.VoiceBinder binder = (VoiceService.VoiceBinder) iBinder;
iBinder = (IBinder) binder.getService();
MainActivity.this.voiceService = ((VoiceService.VoiceBinder)iBinder).getService();
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
voiceService = null;
}
};
//bind service
bindService(new Intent(this, VoiceService.class), serviceConnection, getApplicationContext().BIND_AUTO_CREATE);
startService(new Intent(this, VoiceService.class));
AndroidManifest:
<service
android:name=".VoiceService"
android:enabled="true"
android:exported="false">
</service>
マイ出力:
12-20 22:27:20.307 23624-23624/? V/DATA: 2
をそれは複数回実行されるでしょうか? –
バックグラウンドでいくつかのコードを永久に実行するサービスの場合、このコードを実行しないでください。 – Nix
サービスのどの部分が永遠に実行されると思いますか?確かにonCreateではなく、サービスが最初に作成されたときにのみ呼び出されます。 –