আপনার 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()
এটি আপনি যে পাঠ্যটিকে সেট করতে বলছেন তার সাথে পুরো "উইজেট" প্রতিস্থাপন করে; আপনি ইতিমধ্যে সেখানে রেখেছেন এমন পাঠ্য অন্তর্ভুক্ত।