2013-07-02 17 views
5

Android hizmetim var. Kullanıcı uygulamayı değiştirdiğinde bir görev yapmak istiyorum. Dinleyebileceğim bir yayın ya da olay var mı? Yoklama tek çözüm ise, kimse iyi bir anket tekniğini önerebilir mi?Android: Etkinlik/Uygulama Değişim Olaylarını Algıla

Teşekkürler.

+0

sen lütuf bu soruyu açmalıdır

bu soru zaten daha önce olmadan istedi ve hiçbir yeterli cevabı var olmuştur gibi görünüyor. Cevabım açıkça kabul edilmeye değer bir cevap değil, ben de olası çözümler hakkında merak ediyorum –

cevap

1

Üst aktivite için yoklama tarafından Uygulamaları ayırt edebilirsiniz:

private String lastPackageName; 

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
// get the info from the currently running task 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

    Log.d("topActivity", "CURRENT Activity ::" 
      + taskInfo.get(0).topActivity.getClassName()); 

ComponentName componentInfo = taskInfo.get(0).topActivity; 
String packageName = componentInfo.getPackageName(); 

if(lastPackageName != packageName){ 
    //Probably application changed 
} 

lastPackageName = packageName; 

Ama bu .. Her zaman kullanıcı geri bastığı bu bilgi için yoklama deneyebilirsiniz bu bilgi için yoklamak ne sıklıkla size kalmış olacak , ev düğmeleri veya ekrana presler .. Ama belli ki çok fazla ve kötü yoklama tekniği olacaktır. How to be notified when foreground (top) activity (application) changes

Kaynak: https://stackoverflow.com/a/4753333/1276374

+4

"Kullanıcı, ekrana her basışta, ana düğmeler veya presler her basışta bu sorgulamayı deneyebilirsiniz" - bir servis bunu algılayamaz eşyalar. – CommonsWare

-2

Android Developers sitesinden Notifications document'u kontrol edin. İnternet Bağlantısı Değişikliği sırasında veya Cihaz Yeniden Başlatma sırasında veya Cihaz Kapatma sırasında Bildirim'i görüntüleyebilirsiniz.