アプリケーションでサービスを使用して、ユーザーが電源ボタンを何回押したかを聞いています。実装はすべてのデバイスで正常に動作していました。しかし、私がAndroid Kitkatでアプリをテストしたとき、私は間違ったことに気づいた。Androidサービス:START_STICKYがKitkatで動作しない
アプリケーションをrecentsアプリからスワイプするとすぐに、アプリケーションは電源ボタンを待ち受けません。ここで
は、私が働いているコードです:
public class Receiver extends Service {
Notification notification;
private static final int NOTIFICATION_ID = 0;
NotificationManager manager;
PendingIntent toOpen;
Intent intent;
private BroadcastReceiver POWER_BUTTON = new Powerbuttonrecceiver();
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(POWER_BUTTON, filter);
startNotify();
return START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
unregisterReceiver(POWER_BUTTON);
dismissNotification();
super.onDestroy();
}
public void startNotify(){
manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.ic_launcher_drop;
CharSequence tickerText = "Service activated";
CharSequence tickerContent = "Service is now on. You can press your power button and the app will listen to it. Tap to turn this feature off";
intent = new Intent(Receiver.this, Options.class);
toOpen = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
notification = new NotificationCompat.Builder(getApplicationContext())
.setContentTitle(tickerText)
.setContentText(tickerContent)
.setSmallIcon(icon)
.setOngoing(true)
.setContentIntent(toOpen)
.build();
manager.notify(NOTIFICATION_ID, notification);
}
public void dismissNotification(){
manager.cancel(NOTIFICATION_ID);
}
}
1は、私はサービスがアクティブであることを意味する通知を使用していお気づきのように。私を混乱させることは、recentsアプリからスワイプしても通知が残っていることですが、何が非アクティブなのはBroadcastReceiver
ですか?またはそれは偽である。
アプリのonDestroy
では、登録や登録解除、サービス停止の機能を呼び出すことはありません。もう一度、この問題はAndroid KitKatでのみ見られます。もしあなたが何が起こっているのか知っていればどうか。ヘルプ:)
UPDATEを行います。また、私は離れ更新ムービーから、それをスワイプアプリ際に音楽が停止し、キットカットのPlay Music
に気づきました。これはKitkatのバグですか?しかし、SoundCloud
のサウンド/メディアプレイヤーサービスは、recentsアプリからスワイプされても機能します。
更新: ログインしてください。Issue 63618としてアンドロイド発行トラッカー。 詳細については、問題のコメントを参照してください。
あなたがアプリケーションをスワイプすると、事実上サービスが破壊されています... それ ? –
私は、サービスを破壊する機能を特に呼び出さなかった。私が前に言ったように、アプリケーションは以前のAndroid APIのKitkat @ MadhurAhuja以外で正常に動作します。 –
重複:http://stackoverflow.com/questions/20636330/start-sticky-does-not-work-on-android-kitkat – Muzikant