I used to use will and now I use okhttp. I have a lot of question. Why do all server questions need runOnUiThread? and here is my code:
public class MowzukActivity extends AppCompatActivity implements Callback { TextView date, info, title, text, balance; ImageView imgAvatar, imgShare; Data data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mowzuk); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final Intent intent = getIntent(); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(MowzukActivity.this,MowzukCommentActivity.class).putExtra("id",intent.getIntExtra("id", 0))); } }); date = (TextView) findViewById(R.id.tv_mowzuk_date); info = (TextView) findViewById(R.id.tv_mowzuk_info); title = (TextView) findViewById(R.id.tv_mowzuk_title); text = (TextView) findViewById(R.id.tv_mowzuk_text); balance = (TextView) findViewById(R.id.tv_mowzuk_balance); imgAvatar = (ImageView) findViewById(R.id.img_mowzuk_avatar); imgShare = (ImageView) findViewById(R.id.img_mowzuk_share); imgShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_SEND); intent2.putExtra(Intent.EXTRA_TEXT, intent.getStringExtra("name") + " agza tarapyndan ýazylan Mowzuk: \n" + text.getText() + "\n \n" + "Dostlaryňyz bilen hasda gyzykly gürrüňler indi TMChat-da ýükle: https://play.google.com/store/apps/details?id=com.mkurbanov.tazelik"); intent2.setType("text/plain"); startActivity(intent2); } }); CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); collapsingToolbarLayout.setTitle("Mowzuk"); date.setText(intent.getStringExtra("date")); info.setText(intent.getStringExtra("name") + " agza tarapyndan ýazylan"); title.setText(intent.getStringExtra("title")); balance.setText("+" + intent.getStringExtra("balance")); data = new Data(this); data.getStringRequest(Config.topic_get_text_url + intent.getIntExtra("id", 0), this); switch (intent.getIntExtra("boy", 0)) { case 0: imgAvatar.setImageResource(R.drawable.user_girl); break; case 1: imgAvatar.setImageResource(R.drawable.user_boy); break; case 2: imgAvatar.setImageResource(R.drawable.user_girl_vip); break; case 3: imgAvatar.setImageResource(R.drawable.user_boy_vip); break; } } @Override public void onFailure(Call call, final IOException e) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MowzukActivity.this, R.string.no_connection, Toast.LENGTH_SHORT).show(); Log.d(Config.LOG_TAG, e.toString()); } }); } @Override public void onResponse(Call call, final Response response) throws IOException { MowzukActivity.this.runOnUiThread(new Runnable() { @Override public void run() { text.setText(data.responseToString(response)); } }); } } and get the error:
08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: FATAL EXCEPTION: main 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: Process: com.mkurbanov.tmchat, PID: 19940 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: android.os.NetworkOnMainThreadException 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1166) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at libcore.io.IoBridge.recvfrom(IoBridge.java:506) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at java.net.PlainSocketImpl.read(PlainSocketImpl.java:489) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okio.Okio$2.read(Okio.java:140) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okio.AsyncTimeout$2.read(AsyncTimeout.java:237) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okio.RealBufferedSource.read(RealBufferedSource.java:47) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.internal.http.Http1xStream$ChunkedSource.read(Http1xStream.java:426) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.internal.Util.skipAll(Util.java:178) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.internal.Util.discard(Util.java:160) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.internal.http.Http1xStream$ChunkedSource.close(Http1xStream.java:459) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okio.RealBufferedSource.close(RealBufferedSource.java:468) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.internal.Util.closeQuietly(Util.java:90) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.ResponseBody.bytes(ResponseBody.java:130) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at okhttp3.ResponseBody.string(ResponseBody.java:154) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at com.mkurbanov.tmchat.Data.responseToString(Data.java:69) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at com.mkurbanov.tmchat.ui.MowzukActivity$4.run(MowzukActivity.java:106) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:733) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at android.os.Looper.loop(Looper.java:146) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5593) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 08-05 13:48:48.437 19940-19940/com.mkurbanov.tmchat E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 08-05 13:48:48.477 200-556/? E/ALSAModule: s_standby handle h 0xb8e701f8 08-05 13:48:48.567 196-21934/? E/qdmemalloc: heap_msk=3000000 flags=1 08-05 13:48:48.567 196-21934/? E/qdmemalloc: 08-05 13:48:48.567 196-21934/? E/qdmemalloc: heap_msk=40000000 flags=1 08-05 13:48:48.567 196-21934/? E/qdmemalloc: 08-05 13:48:48.687 200-556/? E/ALSAModule: Number of modifiers 0 08-05 13:48:48.687 200-556/? E/ALSAModule: usecase_type is 0 08-05 13:48:48.767 1017-20129/? E/android.os.Debug: !@Dumpstate > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error 08-05 13:48:49.518 196-1087/? E/qdmemalloc: heap_msk=3000000 flags=1 08-05 13:48:49.518 196-1087/? E/qdmemalloc: 08-05 13:48:49.528 196-1087/? E/qdmemalloc: heap_msk=40000000 flags=1 08-05 13:48:49.528 196-1087/? E/qdmemalloc: 08-05 13:48:49.738 196-1087/? E/qdmemalloc: heap_msk=3000000 flags=1 08-05 13:48:49.738 196-1087/? E/qdmemalloc: 08-05 13:48:49.738 196-1087/? E/qdmemalloc: heap_msk=40000000 flags=1 08-05 13:48:49.738 196-1087/? E/qdmemalloc: 08-05 13:48:51.430 189-189/? E/SMD: DCD OFF 08-05 13:48:53.212 20150-20150/? E/QSEECOMAPI:: Error::Failed to open /dev/qseecom device 08-05 13:48:53.212 20150-20150/? E/QSEECOMAPI:: Error::Failed to open /dev/qseecom device 08-05 13:48:53.212 20150-20150/? E/QSEECOMAPI:: Error::Failed to open /dev/qseecom device 08-05 13:48:53.212 20150-20150/? E/QSEECOMAPI:: Error::Failed to open /dev/qseecom device 08-05 13:48:53.212 20150-20150/? E/QSEECOMAPI:: Error::Failed to open /dev/qseecom device 08-05 13:48:54.433 189-189/? E/SMD: DCD OFF thank