Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5

Според вас как е правилно Нишки!
#1

Здравейте, започнах да се зайгравам с многонишковото и попаднах на няколко решения ето няколко накойто съм се спрял:

Код:
new Handler().postDelayed(new Runnable()
       {
           public void run()
           {
               Intent ii = new Intent(NewActivity.this, MainActivity.class);
               startActivity(ii);
               finish();
           }
       }, 5000L);
тук идва въпроса дали след като нишата се изпълни се затваря. 
Другия варянт е с AsyncTask който мисля е по-добрия

Код:
public class Test extends AsyncTask<String, Void, Void> {
       @Override
       protected Void doInBackground(String... params) {

           HttpClient client = new DefaultHttpClient();
           HttpGet get = new HttpGet(params[0]);
           try {
               И тука се една муха се вълува

           } catch (ClientProtocolException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }

           return null;
       }
Като извикваме в UI
Код:
Test tеt = new Test();
tеt.execute();
за да се синхронизираи затвори всичко.

Въпроса е кое според вас е правилно. Предполагам ще е полезно за всеки намерил темата.



Цитирай
Аксесоари
#2

Изглежда ми, че не си се заиграл достатъчно Smile
Цитирай
#3

Със закъснение, но все пак.

1. Handler
Handler не създава нова нишка, а изпозлва тази, в която е създаден обекта (instance).
- Handler handler = new Handler() => създава обект в нишката, в която кода се намира
- Handler handler = new Handler(Looper.myLooper()) => същото както горния ред
- Handler handler = new Handler(Looper.getMainLooper()) => създава обект в UI нишката (подходящо ако кода се намира в друга нишка)

В зависимост дали забавения метход ще се изпълни или не (Handler.postDelayed()), препоръчително е в деструктивен метод да премахнеш всякакви обекти, т.е.
// примерно в Activity.onDestroy()
handler.removeCallbacksAndMessages(null)

2. AsyncTask e клас който използва нова нишка от множество нишки

В твоя случай - AsyncTask
Цитирай




Потребители разглеждащи темата: 1 гост(и)