এটি একটি পুনরায় লোড করার একটি ভাল অনুশীলন Activity
মধ্যে অ্যান্ড্রয়েড ?
এটি করার সর্বোত্তম উপায় কী হবে? this.finish
এবং তারপর this.startActivity
কার্যকলাপের সাথে Intent
?
এটি একটি পুনরায় লোড করার একটি ভাল অনুশীলন Activity
মধ্যে অ্যান্ড্রয়েড ?
এটি করার সর্বোত্তম উপায় কী হবে? this.finish
এবং তারপর this.startActivity
কার্যকলাপের সাথে Intent
?
উত্তর:
আপনি সহজভাবে ব্যবহার করতে পারেন
finish();
startActivity(getIntent());
Activity
নিজের মধ্যে থেকে একটি রিফ্রেশ
যারা পুনরায় তৈরির () পদ্ধতিটি সহজেই ব্যবহার করার পরে এই ঝলক দেখতে চান না তাদের জন্য
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
অগ্রাধিকার পরিবর্তন থেকে ফিরে আসার পরে ক্রিয়াকলাপটি পুনরায় লোড করতে আমি এটিই করি।
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
এটি মূলত ক্রিয়াকলাপটি পুনরায় চিত্রিত করে।
আপডেট করা: এটি করার একটি আরও ভাল উপায় হল recreate()
পদ্ধতিটি কল করা । এর ফলে ক্রিয়াকলাপটি পুনরায় তৈরি করা হবে।
আমি পূর্ববর্তী উত্তরগুলি দেখেছি যা ইনটেন্ট ব্যবহার করে ক্রিয়াকলাপটি পুনরায় লোড করার জন্য দেওয়া হয়েছে। এগুলি কাজ করবে তবে আপনি ক্রিয়াকলাপ শ্রেণিতে দেওয়া পুনরায় তৈরি () পদ্ধতিটি ব্যবহার করে একই কাজ করতে পারেন।
পরিবর্তে এটি লেখার
// ডায়লগ বাক্স বন্ধ হয়ে গেলে মূল ক্রিয়াকলাপটি রিফ্রেশ করুন
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();
এটি কেবল এটি লেখার মাধ্যমে করা যেতে পারে
recreate();
recreate()
আমার জন্য সমাধান ছিল - "পুনরায় চালু করা" কার্যকলাপটি আমার পক্ষে কাজ করে না, কারণ আমি "স্টার্টএক্টিভিটি ফর রিসাল্ট" ব্যবহার করে ক্রিয়াকলাপটি শুরু করেছি এবং এটি আচরণটি ভেঙে দিয়েছে।
সহজভাবে ব্যবহার
this.recreate();
এটি ক্রিয়াকলাপে অনক্রিট পদ্ধতি ট্রিগার করবে
আমার তাড়াতাড়ি আমার অ্যাপ্লিকেশনগুলির একটিতে একটি বার্তা তালিকা আপডেট করার দরকার ছিল, তাই আমি যে ডায়ালগটি ছিলাম তা বন্ধ করার আগে আমি কেবলমাত্র আমার মূল UI ক্রিয়াকলাপটি রিফ্রেশ করেছিলাম I'm আমি নিশ্চিত যে এটি সম্পাদন করার আরও ভাল উপায় আছে।
// Refresh main activity upon close of dialog box
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish(); //
অ্যান্ড্রয়েডে এমন একটি প্রক্রিয়া পরিচালন সিস্টেম অন্তর্ভুক্ত রয়েছে যা ক্রিয়াকলাপ তৈরি এবং ধ্বংস পরিচালনা করে যা কোনও ক্রিয়াকলাপ ম্যানুয়ালি পুনরায় চালু করা থেকে আপনি যে কোনও সুবিধাকে অবলম্বন করেন তা বেশিরভাগভাবে উপেক্ষা করে। আপনি অ্যাপ্লিকেশন ফান্ডামেন্টাল এ সম্পর্কে আরও তথ্য দেখতে পারেন
তবে ভাল অনুশীলনটি হ'ল এটি নিশ্চিত করা যে আপনার অনপেজ এবং অনটপ পদ্ধতিগুলি এমন কোনও সংস্থান প্রকাশ করে যা আপনার ক্রিয়াকলাপগুলি হ্রাস করতে সর্বনিম্ন ন্যূনতম প্রয়োজনে onLowMemory ধরে রাখার দরকার নেই release
কিছু ক্ষেত্রে এটি সর্বোত্তম অনুশীলন এটি ভাল ধারণা নয় এটি প্রসঙ্গটি চালিত হয় যদি আপনি নীচে ব্যবহার করে এটি বেছে নিয়ে থাকেন তবে কোনও কার্যকলাপ থেকে তাঁর ছেলের কাছে যাওয়ার সর্বোত্তম উপায়:
Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);
startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);
জিনিসটি যখনই আপনি ক্রিয়াকলাপ থেকে () শেষ করেন IWishToRun আপনি আপনার জীবন্ত কার্যকলাপে ফিরে আসেন
আপনার সম্পূর্ণ ক্রিয়াকলাপটি পুনরায় লোড করা ভারী কাজ হতে পারে। কোডের যে অংশটি রিফ্রেশ করতে হবে তা কেবল রাখুন ( কোটলিন ):
override fun onResume() {
super.onResume()
//here...
}
জাভা:
@Override
public void onResume(){
super.onResume();
//here...
}
এবং যখনই প্রয়োজন হবে " অনারুমিউম () " কল করুন ।
আমি মনে করি না এটি একটি ভাল ধারণা ... একটি ক্লিনার পদ্ধতি প্রয়োগ করা আরও ভাল। উদাহরণস্বরূপ, যদি আপনার ক্রিয়াকলাপটি কোনও ফর্ম ধারণ করে তবে ক্লিনার পদ্ধতিটি ফর্মের প্রতিটি উইজেটকে সরিয়ে ফেলতে পারে এবং সমস্ত অস্থায়ী ডেটা মুছে ফেলতে পারে। আমি অনুমান করি আপনি এটি চান: ক্রিয়াকলাপটিকে তার প্রাথমিক অবস্থায় পুনরুদ্ধার করুন।
এটির জন্য কিছুক্ষণ পরীক্ষার পরে আমি কোনও কার্যকলাপ পুনরায় চালু করার কোনও অপ্রত্যাশিত ফলাফল খুঁজে পাইনি। এছাড়াও, আমি বিশ্বাস করি এটি ওরিয়েন্টেশন পরিবর্তনের সময় অ্যান্ড্রয়েড ডিফল্টরূপে যা করে তার সাথে অনেকটাই মিলে যায়, সুতরাং আমি এটি একই রকম পরিস্থিতিতে না করার কারণ দেখছি না।
আমারও একই সমস্যা
import android.support.v4.content.IntentCompat;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
এই কোডটি আমার জন্য কাজ করে। অ্যান্ড্রয়েড এপিআই 17
একটি ক্রিয়াকলাপে আপনি ক্রিয়াকলাপটি recreate()
"পুনরায় তৈরি করতে" কল করতে পারেন (এপিআই 11+)
সেটিং: আমি মত অন্য পদ্ধতির ছিল launchMode
আমার কার্যকলাপের singleTop
এবং কলিং ছাড়া finish()
শুধু startActivity(getIntent())
কাজ হবে। শুধু উভয় নতুন তথ্য যত্নশীল আছে onCreate()
এবং onNewIntent
। সুশের উপায়ের সাথে, অ্যাপ্লিকেশনটি চোখ ধাঁধানো হতে পারে আমান সিংহ বলেছিলেন। তবে আমান সিংহের এই পন্থাটি এখনও একটি নতুন ক্রিয়াকলাপ তৈরি করবে যা একরকম, অপ্রয়োজনীয়, এমনকি যদি সে 'পলক' সমস্যাটি স্থির করে, তবে আমি মনে করি।
এই প্রশ্নের জন্য খুব দেরী, তবে কেউ যদি সমাধানের সন্ধান করে তবে এটি এখানে।
লগইন করার পরে আমার একই সমস্যা ছিল তাই আমি ব্যবহার করেছি
@Override
protected void onRestart() {
this.recreate();
super.onRestart();
}
আমি এটি ব্যবহার করেছি এবং এটি ছাড়াই ভাল কাজ করে
finish()
startActivity(getIntent());
আমার জন্য এটি কাজ করছে এটি অন্য একটি ইন্টেন্ট তৈরি করছে না এবং একই সাথে নতুন নতুন ডেটা লোড করা হয়েছে।
overridePendingTransition(0, 0);
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);