Thread Run (ANDROİD)
-
Hocalarım kafam karışık .. bundan 4-5 gün önce bi post atma olayım vardı twitter'a Post atarken 3.600 Request e izin veriyordu 15 Dakikada bir Bu yüzden kullanıcıya bekleme süresi gibi birşey koydum
Bekleme süresinde azalma işinde bi sorunum var 3. Thread çalışmıyor Mesela Takipçileri request ediyorum Çekerken Zaman ekliyorum örneğin kullanıcının 36.000 takipçisi var Bekleme Süreniz Tahmini 150 Dk dır diyor TexView de gösteriyorum bunu Threadler main Thread dışında çalışmıyor hata veriyor Thread içerisinde Textview.setText Fonk. çalışmıyor haliyle. Bende Timer kullandım olmadı Run Metodu kullanıyorum sadece Thread olmaksızın olmuyor Tekrardan benim gözümden kaçan birşey mi var ? Yada benim mantığım mı yanlış Anlamadım ?
Thread Run Fonksiyonu
try {
do {
PagableFriend = twitter.getFriendsList(twitter.getId(), CursorFriend);
for (User user : PagableFriend) {
FriendsArray.add(user);
Log.e("Followi User Name: " + FriendsCounter, user.getScreenName());
FriendsCounter++;
SayacDevam=false;
Bean.setIsFillingData(false);
if (FriendsCounter == (3599)) {
Thread.sleep(60000 * 15);
SayacDevam=true;
// Toast.makeText(getActivity(),"Verileriniz Yükleniyor Bekleyiniz..",Toast.LENGTH_LONG).show();
FriendsCounter = 0;
}
if ((CursorFriend = PagableFriend.getNextCursor()) == 0) {
FriendFill = true;
Bean.setIsFillingData(true);
}else if ((CursorFollower + "").toString() == null) {
CursorFollower = 0;
}
}
} while ((CursorFriend = PagableFriend.getNextCursor()) != 0);
OnCreateView Fonksiyonu
LblUnfollowTime.post(new Runnable() {public void run() {
if (Sure >= 0 && SayacDevam == true) {
Sure--;
LblUnfollowTime.setText("Tahmini Veri Yüklenmesine " + (Sure) + " Dakika Kaldı");
if (Sure < 0) {
LblbInformation.setText("Verileriniz Yüklendi Unfollowa Başlayabilirsiniz");
}
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
}
} else if (HataAciklama != null) {
LblbInformation.setText(HataAciklama);
}
}
});
Click Fonksiyonuprivate class GetTwitterData implements View.OnClickListener {
MhmdAlmz tarafından 29/Oca/16 15:22 tarihinde düzenlenmiştir
@Override
public void onClick(View v) {
if(DataCek==false) {
//LblUnfollowTime.setText(" Tahmini Kalan Süre : " + Sure + " Dakikadır");
new GetTwitterFriends().start();
new GetTwitterFollower().start();
//new KalanSure().start();
DataCek=true;
}
else{
LblbInformation.setText("Lütfen Verilerinizin Dolmasını Bekleyiniz!");
}
}
}
Edit : Click ekledim -
UI objelerini yalnız main thread içerisinden kullanabilirsin.
Async task, handler ya da runOnUiThread ile çözebilirsin sıkıntını.
Sorunu tam anlayamadım çünkü :D
Geriye doğru sayan sayaç yapmak istiyorsan direk bunu kullan : http://developer.android.com/reference/android/os/CountDownTimer.html
-
Hocam onClick içinde Runnable'ın sonuna start() ekler misin ?
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
mImageView.post(new Runnable() {
public void run() {
// thread'de çalışacak kodlar
}
});
}
}).start();
}edit: Runnable kullanımın da yanlış olmuş zaten hocam taslak yukarda verdiğim gibi olmalı.
manyaki tarafından 29/Oca/16 16:10 tarihinde düzenlenmiştir -
-
@manyaki hocam 3 Thread Çalıştırmıyor o yüzden Thread olarak yapmadım Run Metodunun kullanımı ile yaptım textVeiw.post a run interfacesi ile yazdım 3 Thread çalışsa idi dediğinizi yapacaktım :/
@ozgunlu Hocam onu bulmuştum ama Timer Tarzı birşey lazım :/ Tam timer değil ama
-
Hocam elindeki dataları a,b,c gibi örnekleyerek yapmak istediğini tam anlatabilir misin ? ben de anlayamadım sanırım tam ne istediğini, o şekilde yardımcı olmaya çalışayım.
-
@manyaki
Hocam işlem şu Twitter da Takipçi-TakipEdilen Çekiyorum Ayrıştırmak için daha sonra bunları ayrıştırdıktan sonra unfollow edeceğim
1. Threadim Takipçi çekmek
2. Thread Takip edilenleri çekmek
Sorun : Twitter 3600 Request hakkı veriyor 15 dakikada bir Bu yüzden Thread'e sleep metodu kullanmak zorundayım buda kullanıcıyı bekletiyor Son kullanıcı için Zamanlama koyma fikri geldi .. Bilgilendirme amaçlı
Zamanı da TextView Olarak gösteriyorum Tahmini Bekleme Süresi 10dk... 9 dk 8 dk diye azalacak her 1 dk da bir azalacak bunu da Thread ile yapamıyorum çünkü Thread içerisinde TextViw.Settext Fonksiyonu çalışmıyor Hata veriyor Thread olduğu için bu yüzden başka yollar denedim Timer gibi Run metodunu çalıştırma gibi Örneğin Verileri Çek dediğimde Arkada Verileri çekerken Kulanıcı bekelyecek Çek Buttonuna tıklandığı anda arka planda RUN metodu çalıştıracağım bu RUN metodunun içerisinde zamanlama işlemini yapacağım alttaki Click eventi içerisinde RUN metodunun dışında da bu 2 Veri çekme Threadini çekeceğim ... Sorunum bu umarım anlatabilmişimdir :/ Görüntüleri de atayım
Verileri Çek butonunun yanında Sayaç var