Android uygulamalar yonetim panelinden zorla durudurulmadıgı surece çalışmıyormu.Ben bunu şu şekilde biliyor idim android hiçbir uygulamayı gerçekten kapatmaz.Arka planda çalışmaya devam eder diye biliyordum.Yanı benım mantıgıma gore notification kullancak bırının gcm kullanmadan uygulama kapalı dahı olsa notıfıcation sınıfını çalıştırması gerekiyor.

son birkaç arkadasımla yaptıgım sohbetlerde benim düşüncemin aksine iddia da bulundular.Bu konu ile ilgili bilgisi olan var ise lütfen paylaşsın. Yada durum şu şekilde olabilirmi uygulama kapanmaz ancak hiçbir işlemde yao-pmaz şeklindemi

soruldu: 20 Ağu '14, 11:19

Numan's gravatar image

Numan
673101422
cevap kabul oranı: 6%

değiştirildi: 20 Ağu '14, 11:20

Neden eksi puan verildiğini açıklayabilirmi veren arkadaş

(25 Ağu '14, 14:49) Numan Numan's gravatar image

android activity'ler icinde onDestroy metodu vardir(uygulamanın tek activity activity'den olustugunu farzediyorum) cikislarda kullanılan kaynakları sisteme iade etmek icin. fakat dokumandan da anlasılacagı uzere activity sonlandırılırken cagrilacagini garanti etmez; uygulamayı arkaplana alıp(misal home tusuna basarak) son uygulamalar listesinden kaydırarak silersen, uygulama ayarlarından durdurmaya zorla dersen yahut android sistemi cok uygulama calistiginde ram'den yer acmak icin eski uygulamaları kapatmaya baslar iste bu durumlarda onDestroy cagrilmaz. fakat sen uygulamadan back tusu ile cikarsan onDestroy cagrilir. onResume, onCreate, onPause, onDestroy metotlarına log atarak testler yapmanı oneririm. misal bataryadan cok yiyen gps sensorunu(sistem kaynagı) yonetimini onPause ve onResume uzerinden yaparak sistem kaynaklarını verimli kullanmıs oluruz:

/* Request updates at startup */
  @Override
  protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(provider, 400, 1, this);
  }

  /* Remove the locationlistener updates when Activity is paused */
  @Override
  protected void onPause() {
    super.onPause();
    locationManager.removeUpdates(this);
  }

notifikasyon(gcm) olayı bambaska; o android'in kendi ic mekanizmasi ile saglanıyor, gcm bildirimi geldiginde senin uygulamanın acık olmasına gerek yok.

uygulamayı durdurmaya zorla demezsen yahut son uygulamalar listesinden kaldirmazsan uygulama gercekten ölmez fakat durum bilgisini kaybeder(edittext icerigi vs gibi). dedigim durumları test etmek icin layout'a bir edittext ve checkbox koy, onCreate'e de aşagıdaki periyodik islemi. uygulamayı calistir, edittext'e bir seyler yaz, checkbox'ı isaretle ve back ile uygualmadan cık; logcat'de islemin halen devam ettigini goreceksin, recent apps'den uygulamayı geri ac ui sıfırlanmıs olacak eski counter halen saymaya devam edecek yeni de eklenecek cunku uygulama artalana giderken kaynak iadesinde bulunmadık

public class MainActivity extends Activity {

int count = 0;
private Handler handler;
private Runnable counter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.w("MainActivity", "onCreate");
    setContentView(R.layout.main);

    handler = new Handler();

    counter = new Runnable() {
        @Override
        public void run() {
            count++;
            Log.w("counter", count + "");
            Log.w("isFinishing", isFinishing() + "");

            handler.postDelayed(counter, 1000);
        }
    };

    counter.run();
}

konuyla alakalı guzel bir blog yazısı: http://android-developers.blogspot.com.tr/2010/04/multitasking-android-way.html

The fact that you can see an application's process "running" does not mean the application is running or doing anything. It may simply be there because Android needed it at some point, and has decided that it would be best to keep it around in case it needs it again. Likewise, you may leave an application for a little bit and return to it from where you left off, and during that time Android may have needed to get rid of the process for other things.

A key to how Android handles applications in this way is that processes don't shut down cleanly. When the user leaves an application, its process is kept around in the background, allowing it to continue working (for example downloading web pages) if needed, and come immediately to the foreground if the user returns to it. If a device never runs out of memory, then Android will keep all of these processes around, truly leaving all applications "running" all of the time.

permanent link

cevaplandı: 21 Ağu '14, 03:09

gturedi's gravatar image

gturedi
2.8k41538
cevap kabul oranı: 26%

değiştirildi: 21 Ağu '14, 04:28

Hocam merhabalr Oncelikle bu detaylı anlasılır acıklaman ıcın tesekkr ederim.Ancak bır konuyu duzeltmek ısterım gcm kullanamdan notification vermek istemem ile alakalı aslında bu konu.Yanı uygulama zorla durdurma harıcınde kaydırarak vesaır kapatıldıgında notificatiojn verebililrmiyim asıl öğrenmek istediğim buydu.Ayrıca söylediğin test işlemlerini yapacağım. Teşekkürler

(21 Ağu '14, 08:25) Numan Numan's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×818
×1

Soruldu: 20 Ağu '14, 11:19

Görüntüleme: 698 kez

Son güncelleme: 25 Ağu '14, 14:49

powered by BitNami OSQA