Advertisement
sedana

PreloadActivity

Nov 18th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. package com.sedana.kamus;
  2.  
  3. import android.content.Intent;
  4. import android.content.res.Resources;
  5. import android.database.SQLException;
  6. import android.os.AsyncTask;
  7. import android.os.Bundle;
  8. import android.os.CountDownTimer;
  9. import android.view.View;
  10. import android.widget.ProgressBar;
  11. import android.widget.TextView;
  12.  
  13. import androidx.appcompat.app.AppCompatActivity;
  14.  
  15. import com.sedana.kamus.Data.Helper.KamusHelper;
  16. import com.sedana.kamus.Data.Model.KamusModel;
  17.  
  18. import java.io.BufferedReader;
  19. import java.io.InputStream;
  20. import java.io.InputStreamReader;
  21. import java.util.ArrayList;
  22.  
  23. import butterknife.BindView;
  24. import butterknife.ButterKnife;
  25.  
  26. public class PreloadActivity extends AppCompatActivity {
  27.  
  28. @BindView(R.id.progress_bar)
  29. ProgressBar progress_bar;
  30.  
  31. @BindView(R.id.tv_load)
  32. TextView tv_load;
  33.  
  34. @Override
  35. protected void onCreate(Bundle savedInstanceState) {
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.activity_preload);
  38.  
  39. ButterKnife.bind(this);
  40.  
  41. new LoadData().execute();
  42. }
  43.  
  44. private void loadDummyProcess() {
  45. final int countDown = 1000;
  46. progress_bar.setMax(countDown);
  47. CountDownTimer countDownTimer = new CountDownTimer(countDown, (countDown / 100)) {
  48. @Override
  49. public void onTick(long l) {
  50. progress_bar.setProgress((int) (countDown - l));
  51. }
  52.  
  53. @Override
  54. public void onFinish() {
  55. Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  56. startActivity(intent);
  57. finish();
  58. }
  59. }.start();
  60. }
  61.  
  62. private class LoadData extends AsyncTask<Void, Integer, Void> {
  63. KamusHelper kamusHelper;
  64. AppPreference appPreference;
  65. double progress;
  66. double maxprogress = 100;
  67.  
  68. @Override
  69. protected void onPreExecute() {
  70. kamusHelper = new KamusHelper(PreloadActivity.this);
  71. appPreference = new AppPreference(PreloadActivity.this);
  72. }
  73.  
  74. @SuppressWarnings("WrongThread")
  75. @Override
  76. protected Void doInBackground(Void... params) {
  77. Boolean firstRun = appPreference.getFirstRun();
  78. if (firstRun) {
  79. ArrayList<KamusModel> kamusBali = preLoadRaw(R.raw.bali_indonesia);
  80. ArrayList<KamusModel> kamusIndonesia = preLoadRaw(R.raw.indonesia_bali);
  81.  
  82. publishProgress((int) progress);
  83.  
  84. try {
  85. kamusHelper.open();
  86. } catch (SQLException e) {
  87. e.printStackTrace();
  88. }
  89.  
  90. Double progressMaxInsert = 100.0;
  91. Double progressDiff = (progressMaxInsert - progress) / (kamusBali.size() + kamusIndonesia.size());
  92.  
  93. kamusHelper.insertTransaction(kamusBali, true);
  94. progress += progressDiff;
  95. publishProgress((int) progress);
  96.  
  97. kamusHelper.insertTransaction(kamusIndonesia, false);
  98. progress += progressDiff;
  99. publishProgress((int) progress);
  100.  
  101. kamusHelper.close();
  102. appPreference.setFirstRun(false);
  103.  
  104. publishProgress((int) maxprogress);
  105. } else {
  106. tv_load.setVisibility(View.INVISIBLE);
  107. try {
  108. synchronized (this) {
  109. this.wait(1000);
  110. publishProgress(50);
  111.  
  112. this.wait(300);
  113. publishProgress((int) maxprogress);
  114. }
  115. } catch (Exception e) {
  116. }
  117. }
  118. return null;
  119. }
  120.  
  121. @Override
  122. protected void onProgressUpdate(Integer... values) {
  123. progress_bar.setProgress(values[0]);
  124. }
  125.  
  126. @Override
  127. protected void onPostExecute(Void result) {
  128. Intent i = new Intent(PreloadActivity.this, MainActivity.class);
  129. startActivity(i);
  130.  
  131. finish();
  132. }
  133. }
  134.  
  135. public ArrayList<KamusModel> preLoadRaw(int data) {
  136. ArrayList<KamusModel> kamusModels = new ArrayList<>();
  137. BufferedReader reader;
  138. try {
  139. Resources res = getResources();
  140. InputStream raw_dict = res.openRawResource(data);
  141.  
  142. reader = new BufferedReader(new InputStreamReader(raw_dict));
  143. String line = null;
  144. do {
  145. line = reader.readLine();
  146. String[] splitstr = line.split("\t");
  147. KamusModel kamusModel;
  148. kamusModel = new KamusModel(splitstr[0], splitstr[1]);
  149. kamusModels.add(kamusModel);
  150. } while (line != null);
  151. } catch (Exception e) {
  152. e.printStackTrace();
  153. }
  154.  
  155. return kamusModels;
  156. }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement