আপনার onCreate()পদ্ধতিতে বেশ কয়েকটি বিশাল ত্রুটি রয়েছে:
1) আপনার ক্রিয়াকলাপ onCreate প্রস্তুত করে - সুতরাং এই পদ্ধতিটি শেষ না হওয়া পর্যন্ত আপনি এখানে যা কিছু করেন তা ব্যবহারকারীর কাছে দৃশ্যমান হবে না ! উদাহরণস্বরূপ - আপনি সর্বশেষ পরিবর্তনটি অঙ্কিত হবে এবং এভাবে ব্যবহারকারীর কাছে দৃশ্যমান হবে আপনি TextViewএখানে এক বারের বেশি কোনও পাঠ্য পরিবর্তন করতে পারবেন না !
2) মনে রাখবেন যে একটি অ্যান্ড্রয়েড প্রোগ্রাম - ডিফল্টরূপে - কেবল একটি থ্রেডে চলবে ! সুতরাং: কখনও কখনও ব্যবহার করবেন না Thread.sleep()বা Thread.wait()আপনার মূল থ্রেড যা আপনার ইউআইয়ের জন্য দায়ী! ( আরও তথ্যের জন্য "আপনার অ্যাপ্লিকেশনটিকে প্রতিক্রিয়াশীল রাখুন" পড়ুন !)
তোমার আরম্ভের আপনার ক্রিয়াকলাপের করে হল:
- বিনা কারণে আপনি একটি নতুন
TextViewঅবজেক্ট তৈরি t!
- আপনি আপনার লেআউটটি
TextViewভেরিয়েবলের মধ্যে tপরে বেছে নেবেন ।
- আপনি পাঠ্য সেট করেছেন
t(তবে মনে রাখবেন: এটি শেষ হয়ে onCreate() গেলেই প্রদর্শিত হবে এবং আপনার অ্যাপ্লিকেশনটির মূল ইভেন্ট লুপটি চলে!)
- আপনি আপনার পদ্ধতির মধ্যে 10 সেকেন্ড অপেক্ষা করেন
onCreate- এটি কখনই করা উচিত নয় কারণ এটি সমস্ত ইউআই ক্রিয়াকলাপ বন্ধ করে দেয় এবং অবশ্যই একটি এএনআরকে বাধ্য করবে (অ্যাপ্লিকেশন সাড়া দিচ্ছে না, উপরের লিঙ্কটি দেখুন!)
- তারপরে আপনি অন্য পাঠ্যটি সেট করলেন - আপনার
onCreate()পদ্ধতিটি শেষ হওয়ার সাথে সাথে এটি প্রদর্শিত হবে এবং অন্যান্য বেশ কয়েকটি ক্রিয়াকলাপের জীবনচক্রের পদ্ধতিগুলি প্রক্রিয়া করা হবে!
সমাধান:
কেবল একবার পাঠ্য সেট করুন onCreate()- এটি অবশ্যই প্রথম পাঠ্য যা দৃশ্যমান হওয়া উচিত।
একটি Runnableএবং একটি তৈরি করুনHandler
private final Runnable mUpdateUITimerTask = new Runnable() {
public void run() {
t.setText("Second text to display!");
}
};
private final Handler mHandler = new Handler();
এই রান্নেবলকে হ্যান্ডলার হিসাবে ইনস্টল করুন, এতে onCreate()(তবে আমার পরামর্শটি নীচে পড়ুন):
mHandler.postDelayed(mUpdateUITimerTask, 10 * 1000);
পরামর্শ: নিশ্চিত হয়ে নিন যে আপনি একটি Activityজীবনচক্র জানেন ! আপনি যদি এটির মতো জিনিস করেন onCreate()তবে এটি তখনই ঘটবে যখন আপনার প্রথমবারActivity তৈরি হবে ! অ্যান্ড্রয়েড সম্ভবত এটি আরও দীর্ঘ সময়ের জন্য বাঁচিয়ে রাখবে , এটি দৃশ্যমান না হলেও! যখন কোনও ব্যবহারকারী এটি আবার "শুরু" করে - এবং এটি এখনও বিদ্যমান - আপনি আপনার প্রথম পাঠ্যটি আর দেখতে পাবেন না!Activity
=> সর্বদা হ্যান্ডলারগুলি ইনস্টল onResume()করুন এবং এগুলিকে অক্ষম করুন onPause()! অন্যথায় আপনি যখন আপডেট পাবেন না তখন আপনি "আপডেট" পাবেন Activity! আপনার ক্ষেত্রে, আপনি যদি পুনরায় সক্রিয় হওয়ার সময় আপনার প্রথম পাঠ্যটি আবার দেখতে চান, আপনাকে অবশ্যই এটি সেট আপ করতে হবে onResume(), না onCreate()!
.setText()এটি আপনি যে পাঠ্যটিকে সেট করতে বলছেন তার সাথে পুরো "উইজেট" প্রতিস্থাপন করে; আপনি ইতিমধ্যে সেখানে রেখেছেন এমন পাঠ্য অন্তর্ভুক্ত।