Потоки

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
babygluk
Сообщения: 35
Зарегистрирован: 13 окт 2013, 17:02

Потоки

Сообщение babygluk » 28 окт 2013, 00:09

Пытаюсь запустить вот такой кусочек кода

Код: Выделить всё

	Thread t = new Thread(new Runnable() {
		      public void run() {
		    	  
		        try {
		          TimeUnit.SECONDS.sleep(3);
		          Toast.makeText(MainActivity.this,""+ secconds++,Toast.LENGTH_SHORT).show();
		        } catch (InterruptedException e) {
		          e.printStackTrace();
		        }
		      }
		    });
		    t.start();
вылетает ошибка

Код: Выделить всё

10-27 23:07:29.560: D/dalvikvm(25824): threadid=11: exiting
10-27 23:07:29.560: W/dalvikvm(25824): threadid=11: thread exiting with uncaught exception (group=0x4136f908)
10-27 23:07:29.578: E/AndroidRuntime(25824): FATAL EXCEPTION: Thread-4489
10-27 23:07:29.578: E/AndroidRuntime(25824): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at android.os.Handler.<init>(Handler.java:121)
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at android.widget.Toast$TN.<init>(Toast.java:322)
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at android.widget.Toast.<init>(Toast.java:91)
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at android.widget.Toast.makeText(Toast.java:238)
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at com.odahovskiy.tamagochi.MainActivity$2.run(MainActivity.java:56)
10-27 23:07:29.578: E/AndroidRuntime(25824): 	at java.lang.Thread.run(Thread.java:856)

babygluk
Сообщения: 35
Зарегистрирован: 13 окт 2013, 17:02

Re: Потоки

Сообщение babygluk » 28 окт 2013, 00:20

С этим разобрался =)
2 вопрос.

делаю свои дела в потоке.. делаю делаю) и когда я закрываю приложение, мне нужно остановить поток.

я в onDestroy пишу
t.stop

в ответ получаю

Код: Выделить всё

10-27 23:19:04.729: E/AndroidRuntime(28816): FATAL EXCEPTION: main
10-27 23:19:04.729: E/AndroidRuntime(28816): java.lang.RuntimeException: Unable to destroy activity {com.odahovskiy.tamagochi/com.odahovskiy.tamagochi.MainActivity}: java.lang.UnsupportedOperationException
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3438)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3456)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread.access$1200(ActivityThread.java:149)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.os.Handler.dispatchMessage(Handler.java:99)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.os.Looper.loop(Looper.java:153)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread.main(ActivityThread.java:5086)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at java.lang.reflect.Method.invoke(Method.java:511)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:112)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at dalvik.system.NativeStart.main(Native Method)
10-27 23:19:04.729: E/AndroidRuntime(28816): Caused by: java.lang.UnsupportedOperationException
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at java.lang.Thread.stop(Thread.java:1076)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at java.lang.Thread.stop(Thread.java:1063)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at com.odahovskiy.tamagochi.MainActivity.onDestroy(MainActivity.java:136)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.Activity.performDestroy(Activity.java:5322)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1111)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3425)
10-27 23:19:04.729: E/AndroidRuntime(28816): 	... 12 more

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Потоки

Сообщение KamiSempai » 28 окт 2013, 00:49

Потоки так не закрывают.
Тут Написанно как это делается: http://www.ibm.com/developerworks/ru/li ... -jtp05236/
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

babygluk
Сообщения: 35
Зарегистрирован: 13 окт 2013, 17:02

Re: Потоки

Сообщение babygluk » 28 окт 2013, 00:53

у меня есть поток и есть

Код: Выделить всё

Runnable updateParams = new Runnable() {
    public void run() {
в котором я обновляю некоторые TextView
у меня пару активити с одинаковыми текст вью и id тоже одинаковые)
так вот, когда я с 1 перехожу во 2 активити, поток работает) но не обновляет текст вью второго активити

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Потоки

Сообщение KamiSempai » 28 окт 2013, 12:22

Если TextView имеют одинаковые ID это не значит, что это все один объект.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить