3

サービスの開始時にステータスバーに通知を表示し、サービスを停止するまでそこに保持しようとしていますが、数秒(約10)後に消えます。私が欠けているものに関する提案はありますか? これは、api 15 との互換性のために notification.builder を使用して書き直そうとする前に機能しました。

public class MyService extends Service {
    private NotificationManager mNM;
    private int NOTIFICATION = R.string.service_started;

public void onCreate() {
    super.onCreate();
    mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    showNotification();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.e("MyService", "Service Started");
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    mNM.cancel(NOTIFICATION);
    Log.e("MyService", "Service Ended");
}

@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}

private final IBinder mBinder = new LocalBinder();

private void showNotification() {

    Notification.Builder builder = new Notification.Builder(getApplicationContext());
    builder.setAutoCancel(false)
           .setOngoing(true)
           .setSmallIcon(R.drawable.myicon)
           .setTicker(getText(R.string.service_label))
           .setWhen(System.currentTimeMillis())
           .setContentTitle(getText(R.string.service_started))
           .setContentText(getText(R.string.service_label));
    Notification notification = builder.getNotification();
    mNM.notify(NOTIFICATION, notification);
}
4

1 に答える 1

3

新しい電話のICSで進行中の通知が消えるという同じ問題がありました。アプリと通知は、以前にテストした Android のすべてのバージョンで完全に機能し、ICS エミュレーターでも機能しました。言うまでもなく、これは数か月間私を夢中にさせてきましたが、ついに答えを見つけました.

http://code.google.com/p/android/issues/detail?id=21635

BroadcastReceiver を使用してハンドセットの着信を監視しています。通知の設定に加えて、ボタンが切り替えられたときにプログラムでレシーバーを有効にします。そこで、同じ BroadcastReceiver を接続した小さなテスト アプリを作成し、問題を再現することができました。setComponentEnabledSetting 呼び出しをコメントアウトしたところ、通知が消えなくなりました。

于 2012-11-04T11:15:18.253 に答える