১৫ জানুয়ারি, ২০১৯
WorkManager
WorkManager 1.0.0-beta02 রিলিজ করা হয়েছে। এই রিলিজে কিছু সমস্যার সমাধান করা হয়েছে।
ত্রুটি সমাধান
- Android 6.0 (API লেভেল 23) ভার্সনে চলা ডিভাইসে, নির্দিষ্ট সময় অন্তর কাজ করার ক্ষেত্রে, প্রতি ইন্টারভেলে একাধিকবার কাজ করার সমস্যা সমাধান করা হয়েছে। b/121998363
- Android 5.1 (API লেভেল 22) বা তার আগের ভার্সন চলছে এমন ডিভাইসে
ConcurrentModificationExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/121345393 - Android 5.1 (API লেভেল 22) বা তার আগের ভার্সন চলছে এমন ডিভাইসে বাধ্যবাধকতা পূরণ না হলে কাজের ভুল এক্সিকিউশন ঠিক করা হয়েছে। b/122578012
- কিছু এজ কেসে আরও দ্রুত কাজ সম্পূর্ণ করার জন্য অপ্টিমাইজ করা হয়েছে। b/122358129
- WorkManager ব্যবহার করে এমন
LiveData-এর একাধিক ইনস্ট্যান্সের মধ্যে সম্ভাব্য রেস কন্ডিশন সমাধান করার জন্য একটি পরিবর্তন যোগ করা হয়েছে। 1.1.1-rc01-এর পরিবর্তেRoomডিপেন্ডেন্সি1.1.1ব্যবহার করার জন্য সরানো হয়েছে; এই ভার্সনগুলি একই রকম। b/122578011
১৯ ডিসেম্বর, ২০১৮
WorkManager
WorkManager 1.0.0-beta01 রিলিজ করা হয়েছে। এই রিলিজে কোনও API পরিবর্তন নেই; পরবর্তী ভার্সন না আসা পর্যন্ত, কোনও গুরুতর সমস্যা না হলে, WorkManager-এর API স্থিতিশীল থাকবে বলে আশা করা হচ্ছে। এই রিলিজে কিছু সমস্যার সমাধান করা হয়েছে।
ত্রুটি সমাধান
- আগে বাতিল করা চাইল্ড টাস্কের পেরেন্ট টাস্ক সম্পূর্ণ হয়ে গেলে, চাইল্ড টাস্ক আর রান করবে না। b/120811767
- লগিং ক্লাস সঠিকভাবে শুরু করা হয়েছে (প্রাথমিকভাবে পরীক্ষার সময় দেখা গেছে)।
১৮ ডিসেম্বর, ২০১৮
নেভিগেশন
1.0.0-alpha09 নেভিগেশন রিলিজ করা হয়েছে। এই রিলিজে ব্রেকিং API পরিবর্তন রয়েছে;
নিচে ব্রেকিং পরিবর্তন বিভাগ দেখুন।
আমরা android.arch.navigation:navigation-testing আর্টিফ্যাক্ট ডেভেলপ করা
বন্ধ করার সিদ্ধান্ত নিয়েছি। যদিও এটি NavController-এর ইন্টার্নাল টেস্টিংয়ের জন্য
সহায়ক হিসেবে প্রমাণিত হয়েছে, আমরা বিকল্প টেস্টিং স্ট্র্যাটেজি
ব্যবহার করার জন্য জোরদার সাজেশন দিই, যেমন সঠিক navigate() কল করা হচ্ছে কিনা তা যাচাই করার জন্য
NavController ইনস্ট্যান্স মক করা। এই
পদ্ধতিটি
AndroidDevSummit 2018-এ সিঙ্গেল অ্যাক্টিভিটি টক-এ বিস্তারিতভাবে আলোচনা করা হয়েছে
এবং আমরা বিশেষ করে নেভিগেশনের সাথে টেস্টিংয়ের বিষয়ে
অতিরিক্ত ডকুমেন্টেশন নিয়ে কাজ করব।
নতুন ফিচার
menuCategory="secondary"সহMenuItemআর ব্যাক স্ট্যাক পপ করবে না যখনNavigationUIপদ্ধতির সাথে ব্যবহার করা হয়। b/120104424AppBarConfigurationএখন আপনাকে একটি ফলব্যাকOnNavigateUpListenerইনস্ট্যান্স সেট করার অনুমতি দেয় যাnavController.navigateUp(),falseরিটার্ন করলে কল করা হবে। b/79993862 b/120690961
ব্রেকিং পরিবর্তন
argType="reference"-এর সাথে<argument>ব্যবহার করার সময়, নেভিগেশন আর রেফারেন্স পার্স করে না, পরিবর্তে র রিসোর্স আইডি প্রদান করে। b/111736515onNavDestinationSelected()এখন ডিফল্ট হিসেবে আপনার নেভিগেশন গ্রাফের শুরুর গন্তব্যে ফিরে যায়, যাsetupপদ্ধতির সাথে সামঞ্জস্যপূর্ণ। ব্যাক স্ট্যাক পপ করা এড়াতে আপনারMenuItem-এmenuCategory="secondary"যোগ করুন। aosp/852869- জেনারেট করা
Argsক্লাসেরfromBundle()মেথড এখন নালেবলBundle-এর পরিবর্তে নন-নালBundleনেয় aosp/845616
ত্রুটি সমাধান
- আর্গুমেন্ট এখন ডিপ লিঙ্ক থেকে সঠিক
argTypeহিসেবে সঠিকভাবে পার্স করা হয় সবসময় স্ট্রিং হিসেবে নয় b/110273284 - নেভিগেশন এখন সঠিকভাবে তার সর্বজনীন রিসোর্স এক্সপোর্ট করে b/121059552
- Safe Args এখন Android Gradle Plugin 3.4 Canary 4 এবং তার পরবর্তী ভার্সনের সাথে মানানসই b/119662045
১২ ডিসেম্বর, ২০১৮
WorkManager
WorkManager 1.0.0-alpha13 রিলিজ করা হয়েছে। এই রিলিজে API-তে সামান্য পরিবর্তন করা হয়েছে যা কিছু Kotlin ব্যবহারকারীর জন্য সহায়ক হবে।
API-তে পরিবর্তন
androidx.work.Result-কেListenableWorker-এর ইনার ক্লাস হিসেবে সরানো হয়েছে। এটি Kotlin-এর টপ-লেভেলResultক্লাসের সাথে রিফ্যাক্টরিং সংক্রান্ত বিরোধ প্রতিরোধ করে। এটি একটি ব্রেকিং API পরিবর্তন। b/120564418
API-তে হওয়া পরিবর্তন যা ব্রেকিং চেঞ্জ হিসেবে বিবেচিত
androidx.work.Result-কেListenableWorker-এর ইনার ক্লাস হিসেবে সরানো হয়েছে।
৬ ডিসেম্বর, ২০১৮
পেজিং
2.1.0-beta01 থেকে কোনও পরিবর্তন না করেই পেজিং 2.1.0-rc01 রিলিজ করা হয়েছে।
নেভিগেশন
1.0.0-alpha08 নেভিগেশন রিলিজ করা হয়েছে। এই রিলিজে ব্রেকিং API পরিবর্তন রয়েছে;
নিচে ব্রেকিং পরিবর্তন বিভাগ দেখুন।
নতুন ফিচার
- ডেস্টিনেশন লেবেল,
NavigationUIপদ্ধতির সাথে ব্যবহার করা হলে, এখন অটোমেটিক আপনারandroid:label-এ{argName}ইনস্ট্যান্সকে সঠিক আর্গুমেন্ট দিয়ে পরিবর্তন করবে b/80267266 - নেভিগেশন এখন Support Library 28.0.0-এর উপর নির্ভর করে b/120293333
ব্রেকিং পরিবর্তন
OnNavigatedListener-এর নাম পরিবর্তন করেOnDestinationChangedListenerকরা হয়েছে b/118670572OnDestinationChangedListenerএখন আর্গুমেন্টেরBundle-ও পাস করে aosp/৮৩৭১৪২app:clearTaskওapp:launchDocumentঅ্যাট্রিবিউট এবং সেগুলির সাথে সম্পর্কিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। আপনার ব্যাক স্ট্যাক থেকে সব গন্তব্য সরাতে আপনার গ্রাফের রুটের সাথেapp:popUpToব্যবহার করুন। b/119628354ActivityNavigator.ExtrasএখনBuilderপ্যাটার্ন ব্যবহার করে এবং যেকোনওIntent.FLAG_ACTIVITY_ফ্ল্যাগ সেট করার ক্ষমতা যোগ করে aosp/828140NavController.onHandleDeepLink-এর নাম পরিবর্তন করেhandleDeepLinkকরা হয়েছে aosp/836063- অনেক ক্লাস ও পদ্ধতি সাবক্লাসিংয়ের জন্য নয়, যেমন
NavOptions,NavInflater,NavDeepLinkBuilderএবংAppBarConfiguration,finalকরা হয়েছে aosp/৮৩৫৬৮১ NavHostFragment.setGraph()অবচিত পদ্ধতি সরিয়ে দেওয়া হয়েছে aosp/835684NavigationUI.navigateUp(DrawerLayout, NavController)অবচিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। aosp/835684- ফ্র্যাগমেন্ট তৈরি করার সুবিধা
FragmentNavigator-এ সরানো হয়েছে, যার ফলেFragmentFactory-এ ফ্র্যাগমেন্ট তৈরি করার সুবিধা ডেলিগেট করা আরও সহজ হয়েছে। b/119054429 NavGraphNavigator-এর কনস্ট্রাক্টর আরContextনেয় না aosp/৮৩৫৩৪০- NavigatorProvider এখন
ইন্টারফেসের পরিবর্তে একটি ক্লাস।
getNavigatorProvider()-এর মাধ্যমে ফেরত আসাNavigatorProviderএর কার্যকারিতা পরিবর্তন করেনি। aosp/830660 NavDestination.navigate()সরানো হয়েছে৷ পরিবর্তেNavigator-এnavigate()-কে কল করুন। aosp/830663Navigator-এর উল্লেখযোগ্য রিফ্যাক্টরিং,OnNavigatorNavigatedListener-এর প্রয়োজনীয়তা সরিয়ে দেওয়া এবং পরিবর্তেnavigate-এর মাধ্যমে নেভিগেট করাNavDestinationফিরিয়ে আনা।Navigatorইনস্ট্যান্স আরNavController-এ পপ ইভেন্ট পাঠাতে পারবে না। ব্যাক বোতাম প্রেস করা ইন্টারসেপ্ট করতে এবংnavController.popBackStack()কল করতেOnBackPressedCallbackব্যবহার করার কথা বিবেচনা করুন। aosp/833716
ত্রুটি সমাধান
popUpToএখন ধারাবাহিকভাবে কাজ করে যখন গন্তব্য একটি<navigation>এলিমেন্ট হয় b/116831650- নেস্টেড গ্রাফ ব্যবহার করার সময়
IllegalArgumentExceptionহওয়ার কারণ হিসেবে বেশ কিছু সমস্যার সমাধান করা হয়েছে b/118713731 b/113611083 b/113346925 b/113305559 <activity>গন্তব্যেরdataPatternঅ্যাট্রিবিউট এখনtoString()কল করে নন-স্ট্রিং আর্গুমেন্ট থেকে আর্গুমেন্ট পপুলেট করবে b/120161365
Safe Args
- Safe Args, Enum ভ্যালু সহ Serializable অবজেক্ট সাপোর্ট করে। Enum টাইপ
ক্লাসের নাম ছাড়াই enum লিটারেল ব্যবহার করে ডিফল্ট ভ্যালু সেট করতে পারে
(যেমন,
app:defaultValue="READ") b/111316353 - Safe Args-এ কাজ করে এমন সব ধরনের অ্যারে কাজ করে b/111487504
- Safe Args এখন রিসোর্স ডিরেক্টরির সাবফোল্ডার উপেক্ষা করে b/117893516
- Safe Args যেখানে উপযুক্ত সেখানে
@Overrideঅ্যানোটেশন যোগ করে b/117145301
৫ ডিসেম্বর, ২০১৮
WorkManager
WorkManager 1.0.0-alpha12 রিলিজ করা হয়েছে। এই রিলিজে কিছু ব্রেকিং API পরিবর্তন রয়েছে; নিচে ব্রেকিং API পরিবর্তন বিভাগ দেখুন। এই ভার্সনটি আমাদের প্রথম বিটা হিসেবে রিলিজ করা হতে পারে। এছাড়াও, alpha12-এ ডকুমেন্টেশন সংক্রান্ত অনেক আপডেট রয়েছে।
API-তে পরিবর্তন
- নতুন আর্টিফ্যাক্ট,
work-rxjava2,RxWorker-এর সাথে পরিচয় করায়। এটি একটিListenableWorkerযা একটিSingle<Payload>আশা করে। - Firebase JobDispatcher-এর জন্য সহায়তা সরিয়ে দেওয়া হয়েছে কারণ এটি শীঘ্রই বন্ধ করে দেওয়া হবে। এর অর্থ হল, আমরা বিটা ভার্সনে প্রবেশ করার সাথে সাথে
work-firebaseআর্টিফ্যাক্ট আর আপডেট করা হবে না। আমরা ভবিষ্যতে বিকল্প যোগ করার বিষয়টি বিবেচনা করব। Payload-কেResult-এর সাথে একত্রিত করা হয়েছে।Resultএখন তিনটি কনক্রিট ইমপ্লিমেন্টেশন সহ একটি "সিল করা ক্লাস", যা আপনিResult.success()(বাResult.success(Data)),Result.failure()(বাResult.failure(Data)) এবংResult.retry()-এর মাধ্যমে পেতে পারেন। আপনারListenableFutureএখনPayload-এর পরিবর্তেResultফলাফল দেখায়।Worker-এর কাছে আউটপুটData-এর জন্য গেটার ও সেটার মেথড নেই। এটি একটি ব্রেকিং পরিবর্তন।- স্লো ট্রিগারিং কন্টেন্ট URI-কে আরও ভালোভাবে সাপোর্ট করার জন্য
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)এবংConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)ও ভেরিয়েন্ট যোগ করা হয়েছে। b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)ভ্যারিয়েন্ট যোগ করা হয়েছে। এই পদ্ধতির জন্য API 26 প্রয়োজন।Operation.await()এবংListenableFuture.await()Kotlin এক্সটেনশন পদ্ধতি যোগ করা হয়েছে।Operation.getException()-এর নাম পরিবর্তন করেOperation.getThrowable()করা হয়েছে। এটি একটি ব্রেকিং পরিবর্তন।ContentUriTriggersক্লাস এবং এটিকে রেফার করা পদ্ধতিগুলি সর্বজনীন ব্যবহারের জন্য আর উপলভ্য নেই। এটি একটি ব্রেকিং পরিবর্তন।- API স্ট্রিমলাইন করতে
WorkManager,WorkContinuationএবংOneTimeWorkRequest-এ বাকি varargs পদ্ধতিগুলি সরিয়ে দেওয়া হয়েছে। বিল্ড সংক্রান্ত যেকোনও সমস্যার সমাধান করতে, আপনার আগে থেকে থাকা varargs-কেArrays.asList(...)-এর সাথে র্যাপ করতে পারবেন। আমরা এখনও প্রতিটি পদ্ধতির সিঙ্গেল-আর্গুমেন্ট ভার্সন অন্তর্ভুক্ত করি। এটি একটি ব্রেকিং পরিবর্তন। WorkContinuation.combine(OneTimeWorkRequest, *)টি ভেরিয়েন্ট সরানো হয়েছে। তারা একটি বিভ্রান্তিকর API উপস্থাপন করছিল; বর্তমানcombineপদ্ধতিগুলি আরও বোধগম্য। এটি একটি ব্রেকিং পরিবর্তন।
ত্রুটি সমাধান
- আগে থেকে চলা টাস্কের প্রসেস বন্ধ হয়ে গেলে, Marshmallow-এর আগের ভার্সনে এখন আরও নির্ভরযোগ্যভাবে তা রিকভার করা যায়।
observeForever-এর মাধ্যমে পর্যবেক্ষণ করাLiveData, WorkManager-এর মাধ্যমে ট্র্যাক করা হয়। এটি রুম লাইব্রেরি ফিক্সের ব্যাকপোর্ট। b/74477406- সিরিয়ালাইজ করা অবজেক্ট তার সর্বাধিক সাইজ অতিক্রম করলে,
Data.Builder.build()এখন একটি ব্যতিক্রম থ্রো করে। আগে এটি শুধুমাত্র ব্যাকগ্রাউন্ড থ্রেডে ঘটত যেখানে আপনি এটি সঠিকভাবে ম্যানেজ করতে পারতেন না। - বন্ধ করা বনাম বাতিল করা কাজের মধ্যে আরও পার্থক্য করা হয়েছে;
ListenableWorker.onStopped()চলাকালীনgetWorkInfoById()CANCELLEDStateসহWorkInfoফিরিয়ে দেবে। ListenableWorker-এnullResult-কে ব্যর্থতা হিসেবে বিবেচনা করুন। b/120362353- API 24-এ চলা Shield ট্যাবলেটের জন্য সম্ভাব্য সমাধান যা কখনও কখনও
IllegalArgumentExceptionদেখায়। b/119484416
API-তে হওয়া পরিবর্তন যা ব্রেকিং চেঞ্জ হিসেবে বিবেচিত
- Firebase JobDispatcher-এর জন্য সহায়তা সরিয়ে দেওয়া হয়েছে কারণ এটি শীঘ্রই বন্ধ করে দেওয়া হবে। এর অর্থ হল, আমরা বিটা ভার্সনে প্রবেশ করার সাথে সাথে
work-firebaseআর্টিফ্যাক্ট আর আপডেট করা হবে না। আমরা ভবিষ্যতে বিকল্প যোগ করার বিষয়টি খতিয়ে দেখব। Payload-কেResult-এর সাথে একত্রিত করা হয়েছে।Resultএখন তিনটি কনক্রিট ইমপ্লিমেন্টেশন সহ একটি "সিল করা ক্লাস", যা আপনিResult.success()(বাResult.success(Data)),Result.failure()(বাResult.failure(Data)) এবংResult.retry()-এর মাধ্যমে পেতে পারেন। আপনারListenableFutureএখনPayload-এর পরিবর্তেResultফলাফল দেখায়।Worker-এর কাছে আউটপুটData-এর জন্য গেটার ও সেটার মেথড নেই।Operation.await()এবংListenableFuture.await()Kotlin এক্সটেনশন পদ্ধতি যোগ করা হয়েছে।Operation.getException()-এর নাম পরিবর্তন করেOperation.getThrowable()করা হয়েছে।ContentUriTriggersক্লাস এবং এটিকে রেফার করা পদ্ধতিগুলি সর্বজনীন ব্যবহারের জন্য আর উপলভ্য নেই।- API স্ট্রিমলাইন করতে
WorkManager,WorkContinuationএবংOneTimeWorkRequest-এ বাকি varargs পদ্ধতিগুলি সরিয়ে দেওয়া হয়েছে। বিল্ড সংক্রান্ত যেকোনও সমস্যার সমাধান করতে, আপনার আগে থেকে থাকা varargs-কেArrays.asList(...)-এর সাথে র্যাপ করতে পারবেন। আমরা এখনও প্রতিটি পদ্ধতির সিঙ্গেল-আর্গুমেন্ট ভার্সন অন্তর্ভুক্ত করি। WorkContinuation.combine(OneTimeWorkRequest, *)টি ভেরিয়েন্ট সরানো হয়েছে। তারা একটি বিভ্রান্তিকর API উপস্থাপন করছিল; বর্তমানcombineপদ্ধতিগুলি আরও বোধগম্য।
৪ ডিসেম্বর, ২০১৮
রুম
Room 2.1.0-alpha03-এ coroutines সাপোর্ট ও বেশ কিছু ত্রুটি সমাধান করা হয়েছে।
API-তে পরিবর্তন
@Fts3/@Fts4-এ FTStokenizerএখন Enum-এর পরিবর্তে স্ট্রিং নেয়। এটি কাস্টম টোকেনাইজারকে রুমের মাধ্যমে ব্যবহার করার অনুমতি দেয়। বিল্ট-ইন টোকেনাইজার এখনওFtsOptions-এ স্ট্রিং কনস্ট্যান্ট হিসেবে সংজ্ঞায়িত করা আছে। b/119234881
নতুন ফিচার
- Couroutines: DAO পদ্ধতি এখন সাসপেন্ড ফাংশন হতে পারে। Room-এ সাসপেন্ড ফাংশন সাপোর্ট করার জন্য নতুন আর্টিফ্যাক্ট রিলিজ করা হয়েছে,
room-coroutines। b/৬৯৪৭৪৬৯২ @Insert,@Deleteবা@Updateদিয়ে অ্যানোটেট করা DAO পদ্ধতি এখন রিটার্ন টাইপ হিসেবেListenableFutureসাপোর্ট করে। b/119418331
ত্রুটি সমাধান
- একটি সমস্যার সমাধান করা হয়েছে যেখানে রুম ভুলভাবে
@Entity-এরignoredColumnsপ্রপার্টিতে কলাম সহ একটি কনস্ট্রাক্টর খোঁজার চেষ্টা করবে। b/119830714 - একটি সমস্যার সমাধান করা হয়েছে যেখানে Room, DAO মেথড প্যারামিটারকে তাদের জেনারেট করা ইমপ্লিমেন্টেশনে ফাইনাল হিসেবে চিহ্নিত করবে না। b/118015483
- বিশেষ চিহ্ন সহ কোয়েরিতে কোনও সমস্যা রিপোর্ট করার সময় Room-এর প্রসেসর ক্র্যাশ করার সমস্যাটি সমাধান করা হয়েছে। b/119520136
- একটি সমস্যার সমাধান করা হয়েছে যেখানে Room,
INএক্সপ্রেশনের আর্গুমেন্ট হিসেবে অন্যান্য বিভিন্নCollectionইমপ্লিমেন্টেশন প্রত্যাখ্যান করবে। b/119884035 - একটি সমস্যার সমাধান করা হয়েছে যেখানে রুম থেকে ফেরত আসা LiveData চিরকালের জন্য পর্যবেক্ষণ করা হলে আবর্জনা সংগ্রহ করা হবে যার ফলে এটি আর নতুন ডেটা নির্গত করবে না। b/74477406
- লক কনটেনশন কমাতে
RoomDatabase-এর ক্লোজ লক আপডেট করা হয়েছে। b/117900450
৮ নভেম্বর, ২০১৮
WorkManager
WorkManager 1.0.0-alpha11 রিলিজ করা হয়েছে। এই রিলিজে অনেক পরিবর্তন আছে যা beta-এ স্টেবল API হয়ে যাবে।
এই রিলিজে API-তে কিছু পরিবর্তন করা হয়েছে; নিচে API-তে করা পরিবর্তন বিভাগ দেখুন।
API-তে পরিবর্তন
work-runtime-ktxনতুনCoroutineWorkerনিয়ে এসেছে।WorkStatus-এর নাম পরিবর্তন করেWorkInfoকরা হয়েছে। সব সংশ্লিষ্টgetStatusপদ্ধতির ভেরিয়েন্টের নাম পরিবর্তন করে সংশ্লিষ্টgetWorkInfoভেরিয়েন্ট করা হয়েছে। এটি একটি ব্রেকিং পরিবর্তন।ListenableWorker.onStopped()আর গ্রহণ করে না, এতে একটি বুলিয়ান আর্গুমেন্ট আছে যা দেখায় যেWorkRequestবাতিল করা হয়েছে কিনা।WorkManagerআর এই পার্থক্য করে না। এটি একটি ব্রেকিং পরিবর্তন।androidx.work.testপ্যাকেজের নাম পরিবর্তন করেandroidx.work.testingপ্যাকেজ করা হয়েছে। এটি একটি ব্রেকিং পরিবর্তন।Constraints-এ সেটার আর পাবলিক API-এর অংশ নয়। এটি একটি ব্রেকিং পরিবর্তন।WorkerParameters.getTriggeredContentUris()এবংWorkerParameters.getTriggeredContentAuthorities()আগে রিটার্ন করা অ্যারে। এখন এই পদ্ধতিগুলি কালেকশন রিটার্ন করে। এটি একটি ব্রেকিং পরিবর্তন।ListenableWorker.onStartWork()-এর নাম পরিবর্তন করেListenableWorker.startWork()করা হয়েছে। এটি একটি ব্রেকিং পরিবর্তন।WorkStatus-এর কনস্ট্রাক্টর আর পাবলিক API-এর অংশ নয়। এটি একটি ব্রেকিং পরিবর্তন।Configuration.getMaxJobSchedulerID()এবংConfiguration.getMinJobSchedulerID()-এর নাম পরিবর্তন করে যথাক্রমেConfiguration.getMinJobSchedulerId()এবংConfiguration.getMaxJobSchedulerId()করা হয়েছে। এটি একটি ব্রেকিং পরিবর্তন।- API-এর কর্মদক্ষতা উন্নত করতে পাবলিক API-তে অনেক
@NonNullঅ্যানোটেশন যোগ করা হয়েছে। WorkContinuationতৈরি না করেই অনন্যOneTimeWorkRequestএনকিউ করতেWorkManager.enqueueUniqueWork()API যোগ করুন।WorkManager-এenqueueএবংcancelপদ্ধতির সব ভেরিয়েন্ট এখন নতুনOperationটাইপ রিটার্ন করে। এটি একটি ব্রেকিং পরিবর্তন।enqueue-এর সব ভ্যারিয়েন্টWorkRequest-এর জন্য আর varargs গ্রহণ করে না। এটি একটি ব্রেকিং পরিবর্তন। পরিবর্তে 'কালেকশন' ব্যবহার করুন। আগে থেকে থাকা কোড পরিবর্তন করতে আপনিArrays.asList()ব্যবহার করতে পারবেন। API সারফেস ও মেথড কাউন্ট কমানোর জন্য আমরা এটি করেছি।- প্রতিটি প্রসেসে একাধিকবার
initializeWorkManagerকরার চেষ্টা করলে এখনIllegalStateExceptionহবে। এটি একটি ব্রেকিং পরিবর্তন।
ত্রুটি সমাধান
work-runtime-ktxআর্টিফ্যাক্টে থাকাWorkRequest.BuilderএখনListenableWorkerব্যবহার করে। Fixes b/117666259PeriodicWork-এর জন্য পরবর্তী রান টাইম ভবিষ্যতের কোনও সময়ে হতে হবে। Fixes b/118204399- অ্যাপ স্টার্টআপে WorkManager ব্যবহার করার সময় সম্ভাব্য ডিস্ক I/O সরান। Fixes b/117796731
WorkConstraintsTracker-এ রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করুন। android-workmanager/issues/56 সমস্যার সমাধান করে
API-তে হওয়া পরিবর্তন যা ব্রেকিং চেঞ্জ হিসেবে বিবেচিত
WorkStatus-এর নাম পরিবর্তন করেWorkInfoকরা হয়েছে। সব সংশ্লিষ্টgetStatusপদ্ধতির ভেরিয়েন্টের নাম পরিবর্তন করে সংশ্লিষ্টgetWorkInfoভেরিয়েন্ট করা হয়েছে।ListenableWorker.onStopped()আর গ্রহণ করে না, এতে একটি বুলিয়ান আর্গুমেন্ট আছে যা দেখায় যেWorkRequestবাতিল করা হয়েছে কিনা।WorkManagerআর এই পার্থক্য করে না।androidx.work.testপ্যাকেজের নাম পরিবর্তন করেandroidx.work.testingপ্যাকেজ করা হয়েছে।Constraints-এ সেটার আর পাবলিক API-এর অংশ নয়।WorkerParameters.getTriggeredContentUris()এবংWorkerParameters.getTriggeredContentAuthorities()আগে ফেরত দেওয়া অ্যারে। এখন এই পদ্ধতিগুলি কালেকশন রিটার্ন করে।ListenableWorker.onStartWork()-এর নাম পরিবর্তন করেListenableWorker.startWork()করা হয়েছে।WorkStatus-এর কনস্ট্রাক্টর আর পাবলিক API-এর অংশ নয়।Configuration.getMaxJobSchedulerID()এবংConfiguration.getMinJobSchedulerID()-এর নাম পরিবর্তন করে যথাক্রমেConfiguration.getMinJobSchedulerId()এবংConfiguration.getMaxJobSchedulerId()করা হয়েছে।WorkManager-এenqueueএবংcancelপদ্ধতির সব ভ্যারিয়েন্ট এখন নতুনOperationটাইপ রিটার্ন করে।enqueue-এর সব ভ্যারিয়েন্টWorkRequest-এর জন্য আর varargs গ্রহণ করে না।- প্রতিটি প্রসেসে একাধিকবার
initializeWorkManagerকরার চেষ্টা করলে এখনIllegalStateExceptionহবে।
১ নভেম্বর, ২০১৮
পেজিং
2.1.0-alpha01 থেকে কোনও পরিবর্তন না করেই পেজিং 2.1.0-beta01 রিলিজ করা হয়েছে।
৩০ অক্টোবর, ২০১৮
রুম
Room 2.1.0-alpha02-এ বেশ কিছু ত্রুটি সমাধান ও নতুন ফিচার সহ রিলিজ করা হয়েছে।
নতুন ফিচার
@Relation-এ@DatabaseViewরেফার করার জন্য সহায়তা যোগ করা হয়েছে। b/117680932
ত্রুটি সমাধান
- একটি সমস্যা সমাধান করা হয়েছে যেখানে Rx রিটার্ন টাইপ থেকে সাবস্ক্রাইব এবং ডিসপোজ করার সময় রুম মূল থ্রেডে ডিস্ক I/O পারফর্ম করবে। b/117201279
- Kotlin এন্টিটি ক্লাসের কোনও ফিল্ডের জন্য Room উপযুক্ত টাইপ কনভার্টার খুঁজে না পাওয়ার সমস্যার সমাধান করা হয়েছে। b/111404868
- একটি সমস্যার সমাধান করা হয়েছে যেখানে Room,
DAOইন্টারফেস ইমপ্লিমেন্টেশনের জন্য ভুল কোড জেনারেট করত, যাতে কোনও আর্গুমেন্ট নেই এমন Kotlin ডিফল্ট পদ্ধতি অন্তর্ভুক্ত ছিল। b/117527454 - রুমের SQLite গ্রামার পার্সার আপডেট করা হয়েছে, পারফর্ম্যান্স সংক্রান্ত সমস্যা সমাধান করা হয়েছে যার ফলে বিল্ড করতে অনেক সময় লাগত। b/117401230
২৯ অক্টোবর, ২০১৮
নেভিগেশন
ত্রুটি সমাধান ও API সংক্রান্ত পরিবর্তন সহ Navigation 1.0.0-alpha07 রিলিজ করা হয়েছে।
নতুন ফিচার
- নতুন AppBarConfiguration ক্লাস আপনাকে কোন গন্তব্যগুলিকে টপ-লেভেল গন্তব্য হিসাবে বিবেচনা করা হবে তা কাস্টমাইজ করতে দেয়। বিস্তারিত জানতে আপডেট করা ডকুমেন্টেশন দেখুন। b/117333663
- আপনি এখন আপনার গ্রাফের শুরুর গন্তব্যে আর্গুমেন্ট পাস করতে পারবেন b/110300470
- ডিপ লিঙ্কে এখন পিরিয়ড, হাইফেন ও প্লাস চিহ্ন সহ কাস্টম স্কিম কাজ করে। b/112806402
ব্রেকিং পরিবর্তন
navigation-testing-ktxমডিউলটিnavigation-testing artifact-এর সাথে যুক্ত করা হয়েছে এবং এটি আর প্রকাশ করা হবে না।navigation-testingআর্টিফ্যাক্ট এখন Kotlin স্ট্যান্ডার্ড লাইব্রেরির উপর নির্ভরশীল। Kotlin কনভেনশনের সাথে আরও সামঞ্জস্যপূর্ণ করার জন্য API পরিবর্তন করা হয়েছে, তবে আপনি Java-তে লেখা টেস্টের জন্য এটি ব্যবহার করা চালিয়ে যেতে পারেন।- মেটাডেটা ম্যানিফেস্ট রেজিস্টার করা নেভিগেশন গ্রাফ আর কাজ করে না। b/118355937
- <activity> ডেস্টিনেশনে আর অ্যাকশন অ্যাটাচ করা যাবে না। aosp/785539
ত্রুটি সমাধান
- ডিপ লিঙ্ক এখন কোয়েরি প্যারামিটার সঠিকভাবে পার্স করে। b/110057514
- অ্যাক্টিভিটি ডেস্টিনেশন এখন সঠিকভাবে সব এন্টার ও এক্সিট অ্যানিমেশন প্রয়োগ করে। b/117145284
- কাস্টম নেভিগেটর ব্যবহার করার সময় কনফিগারেশন পরিবর্তন করার পরে যে ক্র্যাশ হয় তা ঠিক করা হয়েছে। b/110763345
Safe Args
- Safe args-এর এখন Android Gradle প্লাগ-ইন 3.2.1-এর উপর একটি নির্দিষ্ট নির্ভরতা রয়েছে। b/113167627
- এখন ইনার ক্লাসের জন্য ডিরেকশন জেনারেট করা যাবে। b/117407555
- <include> গ্রাফে দিকনির্দেশ জেনারেট করার সময় হওয়া সমস্যার সমাধান করা হয়েছে। b/116542123
১২ অক্টোবর, ২০১৮
পেজিং
পেজিং 2.1.0-alpha01 দুটি প্রধান সংযোজন সহ রিলিজ করা হয়েছে - পেজ ড্রপিং এবং প্রতিটি আর্টিফ্যাক্টের জন্য KTX এক্সটেনশন লাইব্রেরি - সেইসাথে অন্যান্য বেশ কয়েকটি API পরিবর্তন এবং সমস্যার সমাধান।
API-তে পরিবর্তন
- মেমরিতে লোড করা আইটেমের সংখ্যা সীমিত করার জন্য
PagedList.Config.Builder.setMaxSize()যোগ করা হয়েছে। PagedList.Config.Builder-এর জন্য Kotlin বিকল্প হিসেবেandroidx.paging.Config()যোগ করা হয়েছেPagedList.Builder-এর জন্য Kotlin বিকল্প হিসেবেandroidx.paging.PagedList()যোগ করা হয়েছেLivePagedListBuilder-এর জন্য Kotlin বিকল্প হিসেবেDataSourceFactory.toLiveData()যোগ করা হয়েছেRxPagedListBuilder-এর জন্য Kotlin বিকল্প হিসেবেDataSourceFactory.toObservable()এবংtoFlowable()যোগ করা হয়েছে- PagedList সোয়্যাপ করা হলে শোনার জন্য
AsyncPagedListDiffer.addPagedListListener()যোগ করা হয়েছে। b/111698609 PagedListAdapter.onCurrentListChanged()ভেরিয়েন্ট যোগ করা হয়েছে যা পুরনো ও নতুন তালিকা পাস করে, আগের ভেরিয়েন্ট বাতিল করা হয়েছে।PagedListAdapter/AsyncPagedListDiffer.submitList()টি ভেরিয়েন্ট যোগ করা হয়েছে যা অতিরিক্ত কলব্যাক নেয় এবং ডিফারেন্সিয়েট করার পরে pagedlist দেখানো হলে/হলে ট্রিগার করে। এটি আপনাকে অন্যান্য UI আপডেটের সাথে PagedList সোয়াপ সিঙ্ক করার অনুমতি দেয়। b/73781068- মেমরিতে কতগুলি আইটেম আছে তা আপনাকে জানাতে
PagedList.getLoadedCount()যোগ করা হয়েছে। মনে রাখবেন, প্লেসহোল্ডার বন্ধ করা থাকলে রিটার্ন ভ্যালু সবসময়.size()-এর সমান হয়।
ত্রুটি সমাধান
- তালিকা আবার ব্যবহার করা হলে, ডিফারেন্সিয়েট করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/111591017
- ইনডেক্স ভুল হলে
PagedList.loadAround()এখনIndexOutOfBoundsExceptionথ্রো করে। আগে এটি অস্পষ্ট অন্যান্য ব্যতিক্রমের সাথে ক্র্যাশ করতে পারত। - এমন একটি সমস্যার সমাধান করা হয়েছে যেখানে অত্যন্ত ছোট প্রাথমিক লোড সাইজ এবং অপরিবর্তিত ডেটার কারণে আর কোনও লোডিং হয় না b/113122599
১১ অক্টোবর, ২০১৮
WorkManager
ডেভেলপার-নিয়ন্ত্রিত অ্যাসিঙ্ক্রোনাস কাজের জন্য WorkManager 1.0.0-alpha10 রিলিজ করা হয়েছে। এই রিলিজে API-তে কিছু পরিবর্তন করা হয়েছে; নিচে API-তে করা পরিবর্তন বিভাগ দেখুন।
আমরা আশা করছি যে WorkManager তার আলফা পিরিয়ডের শেষ পর্যায়ে প্রবেশ করছে। আমরা আশা করি যে বিটা ভার্সনে API স্থিতিশীল থাকবে, তাই আমাদের ইস্যু ট্র্যাকারে আপনার মতামত জানাতে কিছুটা সময় নিন।
API-তে পরিবর্তন
- আগেকার সব
deprecatedপদ্ধতি ও ক্লাস সরিয়ে দেওয়া হয়েছে, বিশেষ করে ডিফল্টWorkerকনস্ট্রাক্টর। এটি একটি ব্রেকিং API পরিবর্তন। NonBlockingWorker-এর নাম পরিবর্তন করেListenableWorkerকরা হয়েছে, যা এখন একটি আনহাইড করা পাবলিক ক্লাস এবং ব্যবহারের জন্য প্রস্তুত।ListenableWorkerএকটি অ্যাবস্ট্রাক্ট পদ্ধতি,ListenableFuture<Payload> onStartWork()-এ অ্যাক্সেস প্রদান করে যা মূল থ্রেডে কল করা হয়। অ্যাসিঙ্ক্রোনাসভাবে কাজ শুরু ও প্রসেস করার দায়িত্ব আপনার। হয়ে গেলে, আপনাকেListenableFutureযথাযথভাবে আপডেট করতে হবে।ListenableFuture-এর রেফারেন্স ইমপ্লিমেন্টেশনalpha02-এFuturesপ্যাকেজে প্রদান করা হয়েছে (WorkManagerবিভাগের নিচে দেখুন)।Worker,ListenableWorker-কে এক্সটেন্ড করে এবং এখনও আগের মতোই কাজ করে, সাথে একটি অ্যাবস্ট্রাক্টResult doWork()পদ্ধতি থাকে।WorkerথেকেListenableWorker-এ কিছু পদ্ধতি ও মেম্বারকে শাফেল করা হয়েছে।- আমরা শীঘ্রই
ListenableWorker-এর জন্য রেফারেন্স ইমপ্লিমেন্টেশন প্রদান করব যা Kotlin coroutines (স্টেবল ভার্সন রিলিজ হওয়ার পরে) এবং RxJava2 ব্যবহার করে।
- ইন্টারফেস
WorkerFactoryএবং কনক্রিট ইমপ্লিমেন্টেশনDefaultWorkerFactory-কেWorkerFactoryনামক অ্যাবস্ট্রাক্ট ক্লাসে মার্জ করা হয়েছে। এই প্রয়োগ নিশ্চিত করে যে ব্যবহারকারীর তৈরি করা যেকোনওWorkerFactoryইনস্ট্যান্সের জন্য শেষ চেষ্টা হিসেবে ডিফল্ট রিফ্লেকশন-ভিত্তিক আচরণ কল করা হয়। এটি একটি ব্রেকিং পরিবর্তন। WorkManager.synchronous()এবংWorkContinuation.synchronous()ও সব সম্পর্কিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। API-তে অনেক পদ্ধতির রিটার্ন টাইপ হিসেবেListenableFuture<Void>যোগ করা হয়েছে। এটি একটি ব্রেকিং API পরিবর্তন।- আপনি এখন
ListenableFutureব্যবহার করে সিঙ্ক্রোনাসভাবে পেতে এবং পর্যবেক্ষণ করতে পারবেন। যেমন,WorkManager.enqueue()আগেvoidরিটার্ন করত; এখন এটিListenableFuture<Void>রিটার্ন করে। অপারেশন সম্পূর্ণ হয়ে গেলে কোড রান করার জন্য আপনিListenableFuture.addListener(Runnable, Executor)বাListenableFuture.get()-এ কল করতে পারবেন। - মনে রাখবেন যে এই
ListenableFutureগুলি আপনাকে বলে না যে অপারেশনটি সফল হয়েছে নাকি ব্যর্থ হয়েছে; শুধু যে তারা শেষ করেছে। এই তথ্য খুঁজে পেতে আপনাকে এখনও WorkManager পদ্ধতি চেইন করতে হবে। - আমরা এইসব অবজেক্টে
cancel()কল উপেক্ষা করি, কারণ সেগুলি বিভ্রান্তিকর এবং কারণ সম্পর্কে যুক্তি দেওয়া কঠিন (আপনি কি অপারেশন বা ফলাফল বাতিল করছেন?)। এটিFuture-এর চুক্তির মধ্যে পড়ে। - সিঙ্ক্রোনাস
getStatus*পদ্ধতির সাথে সমতা বজায় রাখতে, আমরাListenableFutureভেরিয়েন্ট প্রদান করেছি এবং আগে থেকে থাকা যেগুলিLiveDataফিরিয়ে দিয়েছে সেগুলির নাম পরিবর্তন করেছি যাতে নামের অংশ হিসেবে স্পষ্টভাবে "LiveData" থাকে (যেমন,getStatusesByIdLiveData(UUID))। এটি একটি ব্রেকিং API পরিবর্তন।
- আপনি এখন
ত্রুটি সমাধান
- ডুপ্লিকেট
androidx-annotations.proফাইল সংক্রান্ত alpha09-এর পরিচিত সমস্যার সমাধান করা হয়েছে। আপনার গ্রেডেল ফাইল থেকেexclude 'META-INF/proguard/androidx-annotations.pro'মুছে দিয়ে আপনি আগের রিলিজ নোট থেকে ওয়ার্কঅ্যারাউন্ড সরিয়ে দিতে পারেন। - নতুন
Workerকনস্ট্রাক্টর রাখতে proguard কনফিগারেশন যোগ করা হয়েছে। b/116296569 - রেস কন্ডিশনে সম্ভাব্য
NullPointerException-এর সমাধান করুন যেখানে কাজREPLACEকরা হয়েছে। b/116253486 এবং b/116677275 WorkContinuation.combine()এখন দুই বা তার বেশি-এর পরিবর্তে এক বা তার বেশিWorkContinuationগ্রহণ করে। b/117266752
API-তে হওয়া পরিবর্তন যা ব্রেকিং চেঞ্জ হিসেবে বিবেচিত
- আগেকার সব
deprecatedপদ্ধতি ও ক্লাস সরিয়ে দেওয়া হয়েছে, বিশেষ করে ডিফল্টWorkerকনস্ট্রাক্টর। - ইন্টারফেস
WorkerFactoryএবং কনক্রিট ইমপ্লিমেন্টেশনDefaultWorkerFactory-কেWorkerFactoryনামক অ্যাবস্ট্রাক্ট ক্লাসে মার্জ করা হয়েছে। WorkManager.synchronous()এবংWorkContinuation.synchronous()সরানো হয়েছে।WorkManager.getStatus*()মেথড এখনListenableFutureরিটার্ন করে।WorkManager.getStatus*LiveData()LiveDataফেরত দেয়।
ফিউচার
ফিউচার 1.0.0-alpha02 রিলিজ করা হয়েছে।
API-তে পরিবর্তন
- ডেভেলপাররা এখন
ListenableFuture-এর লাইটওয়েট কনক্রিট ইমপ্লিমেন্টেশন হিসেবেResolvableFutureএবংAbstractResolvableFutureব্যবহার করতে পারবেন।
৮ অক্টোবর, ২০১৮
রুম
2.1.0-alpha01 রুম রিলিজ করা হয়েছে।
নতুন ফিচার
- FTS: Room এখন FTS3 বা FTS4 টেবিল ম্যাপিংয়ের মাধ্যমে এন্টিটি সাপোর্ট করে।
@Entityদিয়ে অ্যানোটেট করা ক্লাস এখন অতিরিক্তভাবে@Fts3বা@Fts4দিয়ে অ্যানোটেট করা যাবে যাতে ম্যাপিং সম্পূর্ণ টেক্সট সার্চ টেবিল সহ ক্লাস ঘোষণা করা যায়। আরও কাস্টমাইজেশনের জন্য FTS বিকল্প অ্যানোটেশনের পদ্ধতির মাধ্যমে উপলভ্য। b/62356416 - Views: Room এখন @DatabaseView অ্যানোটেশন ব্যবহার করে একটি ক্লাসকে স্টোর করা কোয়েরি হিসেবে ঘোষণা করার সুবিধা দেয়, যা view নামেও পরিচিত। b/67033276
- Auto Value: Room এখন এন্টিটি ও POJO হিসেবে AutoValue অ্যানোটেট করা ক্লাস ঘোষণা করার সুবিধা দেয়। রুম অ্যানোটেশন
@PrimaryKey,@ColumnInfo,@Embeddedএবং@Relationএখন অটো ভ্যালু অ্যানোটেটেড ক্লাসের অ্যাবস্ট্রাক্ট পদ্ধতিতে ঘোষণা করা যেতে পারে। মনে রাখবেন, Room যাতে সঠিকভাবে বুঝতে পারে তার জন্য এই অ্যানোটেশনের সাথে@CopyAnnotations-ও থাকতে হবে। b/62408420 - অতিরিক্ত Rx রিটার্ন টাইপ সাপোর্ট:
@Insert,@Deleteবা@Updateদিয়ে অ্যানোটেট করা DAO পদ্ধতি এখন Rx রিটার্ন টাইপCompletable,Single<T>ওMaybe<T>সাপোর্ট করে। b/63317956 @Relationসহ ইমিউটেবল টাইপ: আগে Room-এর জন্য@Relationঅ্যানোটেট করা ফিল্ড সেট করার প্রয়োজন ছিল, কিন্তু এখন সেগুলি কনস্ট্রাক্টর প্যারামিটার হতে পারে।enableMultiInstanceInvalidation: একই ডেটাবেস ফাইল ব্যবহার করে RoomDatabase-এর একাধিক ইনস্ট্যান্স জুড়ে ইনভ্যালিডেশন চালু করার জন্যRoomDatabase.Builder-এ একটি নতুন API। এই মাল্টি-ইনস্ট্যান্স ইনভ্যালিডেশন মেকানিজম একাধিক প্রসেস জুড়েও কাজ করে। b/62334005fallbackToDestructiveMigrationOnDowngrade:RoomDatabase.Builder-এ নতুন API যা ডাউনগ্রেড হলে অটোমেটিক ডেটাবেস আবার তৈরি করে। b/110416954ignoredColumns:@Entityঅ্যানোটেশনে একটি নতুন API যা নাম অনুযায়ী উপেক্ষা করা ফিল্ডের তালিকা তৈরি করতে ব্যবহার করা যেতে পারে। কোনও এন্টিটিতে ইনহেরিট করা ফিল্ড উপেক্ষা করার জন্য উপযোগী। b/63522075
API / আচরণে পরিবর্তন
RoomDatabase-এmCallbackএবংmDatabaseএখন@Deprecatedএবং রুমের পরবর্তী প্রধান ভার্সনে সরিয়ে দেওয়া হবে। b/76109329
ত্রুটি সমাধান
- দুটি সমস্যার সমাধান করা হয়েছে, যেখানে শুরু করার সময় Room সঠিকভাবে কোনও খারাপ ডেটাবেস বা খারাপ মাইগ্রেশন থেকে আগের অবস্থায় ফিরতে পারেনি। b/111504749 এবং b/111519144
- Room এখন ডেটা ক্লাসে Kotlin-এর প্রাথমিক কনস্ট্রাক্টর সঠিকভাবে ব্যবহার করবে, যার ফলে ফিল্ডগুলিকে
varsহিসেবে ঘোষণা করার প্রয়োজন এড়ানো যাবে। b/105769985
১ অক্টোবর, ২০১৮
2.0.0-rc01 থেকে কোনও পরিবর্তন না করেই 2.0.0 রুম রিলিজ করা হয়েছে।
Paging 2.0.0 একটিমাত্র বাগফিক্স সহ রিলিজ করা হয়েছে।
পেজিং
ত্রুটি সমাধান
PositionalDataSourceএবং প্লেসহোল্ডার b/114635383 ব্যবহার করে খুব দ্রুত স্ক্রল করার সময় যে ক্র্যাশ হতে পারত তা ঠিক করা হয়েছে।
২১ সেপ্টেম্বর, ২০১৮
ViewModel-এ 2.0.0-rc01 থেকে একটি বাগফিক্স সহ Lifecycle 2.0.0 রিলিজ করা হয়েছে।
জীবনচক্র
ত্রুটি সমাধান
- ViewModel proguard-এর একটি নিয়ম ঠিক করা হয়েছে যা ভুল করে কনস্ট্রাক্টর সরিয়ে দিয়েছিল b/112230489
২০ সেপ্টেম্বর, ২০১৮
নেভিগেশন
ত্রুটি সমাধান ও API সংক্রান্ত পরিবর্তন সহ Navigation 1.0.0-alpha06 রিলিজ করা হয়েছে।
নতুন ফিচার
- ফ্র্যাগমেন্ট ও অ্যাক্টিভিটি ডেস্টিনেশনের জন্য শেয়ার করা এলিমেন্ট ট্রানজিশন এখন কাজ করে b/79665225। আরও তথ্যের জন্য, নেভিগেশন আর্কিটেকচার কম্পোনেন্টের মাধ্যমে নেভিগেশন প্রয়োগ করুন দেখুন
NavigationView-এ কোনও আইটেম বেছে নিলে, এখন স্ক্রিনের নিচে অ্যাটাচ করা শিট বন্ধ হয়ে যাবে b/112158843
API-তে পরিবর্তন
- ব্রেকিং পরিবর্তন: Navigator
navigate()মেথড এখনNavigator.Extrasপ্যারামিটার নেয়। - NavController-এর
getGraph()পদ্ধতি এখনNonNullb/112243286
ত্রুটি সমাধান
NavigationUI.setupWithNavController()-এর সাথে আলাদা আলাদা ডেস্টিনেশনের ভিউ ব্যবহার করা হলে, এটি আর ভিউ লিক করে না b/111961977- Navigator
onSaveState()এখন শুধু একবার কল করা হয় b/112627079
Safe Args
- নেভিগেশন ডেস্টিনেশন Directions ক্লাস এখন তাদের পেরেন্ট Directions ক্লাসকে এক্সটেন্ড করে, যদি সেটি থাকে b/79871405
- Directions এবং Args ক্লাসে এখন একটি উপযোগী
toString()ইমপ্লিমেন্টেশন আছে b/111843389
১৯ সেপ্টেম্বর, ২০১৮
WorkManager
WorkManager 1.0.0-alpha09-এ ত্রুটি সমাধান, ইনফ্রাস্ট্রাকচার আপডেট ও API পরিবর্তন করা হয়েছে।
পরিচিত সমস্যা
আপনি যদি নিম্নলিখিত সমস্যার সম্মুখীন হন: "OS ইন্ডিপেন্ডেন্ট পাথ 'META-INF/proguard/androidx-annotations.pro' সহ একাধিক ফাইল পাওয়া গেছে", তাহলে আমরা alpha10-এ সমস্যার সমাধান না করা পর্যন্ত সাময়িক সমাধান হিসেবে আপনার গ্রেডেল ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্ৰুভি
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
ত্রুটি সমাধান
- "১০০টি কাজ" সংক্রান্ত সমস্যার জন্য প্রয়োজনীয় আরেকটি সমাধান যোগ করা হয়েছে। b/115560696
- রেস কন্ডিশনের কারণে ফরেন কী কনস্ট্রেন্ট সংক্রান্ত সমস্যার জন্য কিছু সমাধান যোগ করা হয়েছে। b/114705286
ConstraintTrackingWorker.onStopped(boolean)-এর কলWorker-এ ডেলিগেট করা হয়েছে। b/114125093- Firebase JobDispatcher-এর জন্য সঠিক ন্যূনতম ব্যাকঅফ বিলম্ব প্রয়োগ করুন। b/113304626
- লাইব্রেরির ইন্টার্নাল থ্রেডিং গ্যারান্টি উন্নত করা হয়েছে।
LiveData-এর ইন্টার্নাল ডুপ্লিকেট এন্ট্রি সরানোর সময় সম্ভাব্য সমস্যার সমাধান করুন।
API-তে পরিবর্তন
- আপনি এখন
WorkManager.Configuration-এর অংশ হিসেবেWorkerFactoryউল্লেখ করে রানটাইমে নিজেরWorkerইনস্ট্যান্স তৈরি করতে পারবেন। ফলব্যাক ফ্যাক্টরি হলDefaultWorkerFactory, যা WorkManager-এর আগের ভার্সনের আচরণের সাথে মেলে।WorkerএবংNonBlockingWorker-এর জন্য ডিফল্ট কনস্ট্রাক্টর এখন বন্ধ করা হয়েছে হিসেবে চিহ্নিত করা হয়েছে। নতুন কনস্ট্রাক্টর (Worker(Context, WorkerParameters)) ব্যবহার করুন এবংsuper(Context, WorkerParameters)কল করুন; WorkManager-এর পরবর্তী ভার্সন থেকে ডিফল্ট কনস্ট্রাক্টর সরিয়ে দেওয়া হবে।
- আমরা ইন্টার্নালি নতুন
ListenableFutureআর্টিফ্যাক্ট ব্যবহার করা শুরু করেছি (Guava ডিপেন্ডেন্সি ছাড়াই)। আমরা আসন্ন রিলিজে API-তে ListenableFutures চালু করব। এই পরিবর্তনের ফলেNonBlockingWorker-এর আনহাইড করার সুবিধা পাওয়া যাবে। TestDriver.setInitialDelayMet(UUID)ওTestDriver.setPeriodDelayMet(UUID)-এর মাধ্যমেTestDriver-এ সময় নির্ধারিত কাজ ট্রিগার করার ক্ষমতা যোগ করুন। b/113360060
ব্রেকিং পরিবর্তন
- ডিফল্ট
WorkerএবংNonBlockingWorkerকনস্ট্রাক্টর বন্ধ করা হয়েছে। যত তাড়াতাড়ি সম্ভব নতুন কনস্ট্রাক্টরে মাইগ্রেট করুন। ভবিষ্যতের ভার্সন থেকে ডিফল্ট কনস্ট্রাক্টর সরিয়ে দেওয়া হবে।
২৭ আগস্ট, ২০১৮
WorkManager
WorkManager 1.0.0-alpha08-এ ত্রুটি সমাধান করা হয়েছে।
ত্রুটি সমাধান
- WorkManager কম্পোনেন্টকে সরাসরি বুট-আনঅ্যাওয়ার হিসেবে স্পষ্টভাবে লেবেল করা হয়েছে যাতে সরাসরি বুট করার সময় সেগুলি চালু না হয়। ভবিষ্যতে, আমরা WorkManager-এর এমন একটি ভার্সন প্রদান করব যা সরাসরি বুট-অ্যাওয়ার। b/112665532
- আবার চেষ্টা করা টাস্ক রান না করার সমস্যা সমাধান করা হয়েছে। b/112604021
- নির্দিষ্ট সময় অন্তর কাজ বারবার না হওয়ার সমস্যা সমাধান করা হয়েছে (উপরের সমস্যার সাথে সম্পর্কিত)। b/112859683
- অ্যাপ প্রসেস আগে থেকেই চালু থাকলে ব্যাকঅফ নীতি মেনে চলা হয়।
Data-এ ব্যতিক্রম মেসেজ সংশোধন করা হয়েছে যাতে বোঝা যায় যে সীমা হল ১০ কেবি।JobSchedulerপ্রসেসিং সম্পূর্ণ হতে কিছুটা লেটেন্সি হওয়ার কারণেConfiguration.setMaxSchedulerLimit(int)-এর সর্বাধিক ভ্যালু কমিয়ে ৫০ করা হয়েছে। b/112817355
১৬ আগস্ট, ২০১৮
WorkManager
WorkManager 1.0.0-alpha07 রিলিজ করা হয়েছে, এতে সমস্যার সমাধান করা হয়েছে এবং API-তে সামান্য পরিবর্তন করা হয়েছে।
ত্রুটি সমাধান
- নেগেটিভ লিমিট সহ সম্ভাব্য SQL কোয়েরি সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যার ফলে সীমাহীন সংখ্যক ফলাফল দেখানো হতে পারত।
- যে কাজ সম্পূর্ণ হয়ে গেছে, সেটি এখন অন্যান্য শিডিউলারে সেই কাজের বাকি থাকা সব কপি সঠিকভাবে বাতিল করে দেয়। এর ফলে
JobSchedulerটি জবের সীমা পেরিয়ে গেছে। b/111569265 ConstraintTracker-এConcurrentModificationExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/112272753Data.getBooleanArray(String)এবংData.getIntArray(String)-এর রিটার্ন টাইপ অ্যানোটেশন পরিবর্তন করে@NonNull-এর পরিবর্তে@Nullableকরা হয়েছে। b/112275229
API-তে পরিবর্তন
Workerএখন নতুন ক্লাস,NonBlockingWorkerএক্সটেন্ড করে। এটি বর্তমান ব্যবহারের উপর কোনও প্রভাব ফেলে না। ভবিষ্যতে, কাস্টম থ্রেডিং সমাধানের জন্যNonBlockingWorkerসম্পূর্ণভাবে কাজ করবে।Data.getBooleanArray(String)এবংData.getIntArray(String)-এর রিটার্ন টাইপ অ্যানোটেশন পরিবর্তন করে@NonNull-এর পরিবর্তে@Nullableকরা হয়েছে। b/112275229- Kotlin এক্সটেনশন:
Map.toWorkData()অননুমোদিত করা হয়েছে এবং আগে থেকে থাকা API-এর সাথে আরও সামঞ্জস্যপূর্ণ করতে টপ-লেভেলworkDataOf(vararg Pair<String, Any?>)যোগ করা হয়েছে।
১০ আগস্ট, ২০১৮
নেভিগেশন
ত্রুটি সমাধান সহ নেভিগেশন 1.0.0-alpha05 রিলিজ করা হয়েছে।
ত্রুটি সমাধান
- ব্যাকস্ট্যাকের ভুল আচরণের কারণ হওয়া সমস্যার সমাধান করা। b/111907708
- জেনারেট করা Args ক্লাসের
equals()-এ বাগ সংক্রান্ত সমস্যার সমাধান করুন। b/111450897 - Safe Args-এ বিল্ড সংক্রান্ত সমস্যার সমাধান করুন। b/109409713
- রিসোর্স শনাক্তকারী থেকে জাভা নামে কনভার্সন সংক্রান্ত সমস্যার সমাধান করুন b/111602491
- Safe Args প্লাগ-ইনে নালেবিলিটি সম্পর্কিত সমস্যার মেসেজ ঠিক করুন।
- বাদ পড়া নালেবিলিটি অ্যানোটেশন যোগ করুন।
৬ আগস্ট, ২০১৮
Lifecycle, Room ও Paging-এর AndroidX ভার্সন 2.0.0-rc01 ভার্সন রিলিজ করে। 2.0.0-beta01 থেকে সব আর্টিফ্যাক্ট অপরিবর্তিত আছে।
১ আগস্ট, ২০১৮
WorkManager
WorkManager 1.0.0-alpha06-এ ত্রুটি সমাধান করা হয়েছে।
ত্রুটি সমাধান
- কাজ শিডিউল করার সময় ডেটাবেস লক হওয়া আটকান। b/111801342
- ডোজ মোডে থাকাকালীন শিডিউল অনুযায়ী
PeriodicWorkরান না করার সমস্যার সমাধান করুন। b/111469837 - কনস্ট্রেন্ট ট্র্যাক করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার কারণে
WorkManagerক্র্যাশ করে। googlecodelabs/android-workmanager/issues/56 WorkRequest.Builder#build()ব্যবহার করার সময় অনন্যWorkRequestতৈরি করুন। b/111408337- Enable the use of
RescheduleReceiveronly when there areWorkRequests that need it. b/111765853
২৪ জুলাই, ২০১৮
WorkManager
WorkManager 1.0.0-alpha05 গুরুত্বপূর্ণ ত্রুটি সমাধান ও লগিং সংক্রান্ত পরিবর্তন সহ রিলিজ করা হয়েছে।
API-তে পরিবর্তন
WorkManager.getInstance()এখন@Nullable-এর পরিবর্তে@NonNull-এর সাথে অ্যানোটেট করা হয়েছে। পরিবর্তে, ম্যানুয়াল ইনিশিয়ালাইজেশনের ক্ষেত্রে সিঙ্গলটন সঠিকভাবে ইনিশিয়ালাইজ না হলে, পদ্ধতিটি একটিIllegalStateExceptionথ্রো করবে। এটি একটি ব্রেকিং API পরিবর্তন।- নতুন API,
Configuration.Builder.setMinimumLoggingLevel(int)যোগ করা হয়েছে, যা WorkManager-এর ভার্বোসিটি নিয়ন্ত্রণ করতে পারে। ডিফল্ট হিসেবে, WorkManagerLog.INFOএবং তার বেশি লগ করে। Data.getString()-এর সিগনেচার পরিবর্তন করা হয়েছে যাতে এটি আর ডিফল্ট ভ্যালু না নেয় (এটি অন্তর্নিহিতভাবেnull)। এটি একটি ব্রেকিং API পরিবর্তন।- শুধুমাত্র ইন্টার্নাল ব্যবহারের জন্য প্রয়োজনীয় কিছু পদ্ধতি
@hideহিসেবে চিহ্নিত করা হয়েছে। এর মধ্যেConstraintsকনস্ট্রাক্টর,Data.toByteArray()ওData.fromByteArray(byte[])অন্তর্ভুক্ত। এটি একটি ব্রেকিং API পরিবর্তন।
ত্রুটি সমাধান
- অটো-ব্যাকআপের পরিচিত কেসের সময় WorkManager আর কাজ এক্সিকিউট করে না। এর ফলে ক্র্যাশ হতে পারত। b/110564377
JobSchedulerব্যবহার করার সময়PeriodicWorkRequest-এর ডবল-শিডিউলিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/110798652- ডিভাইস ডোজের পরে
PeriodicWorkRequestসঠিকভাবে কাজ না করার সমস্যা সমাধান করা হয়েছে। b/111469837 - Firebase JobDispatcher ব্যবহার করার সময় প্রাথমিক বিলম্ব সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/111141023
- কিছু সম্ভাব্য রেস কন্ডিশন ও টাইমিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
- যেসব
BroadcastReceiverআর প্রয়োজন নেই সেগুলি সঠিকভাবে খালি করা হয়েছে। - জোর করে বন্ধ করার পরে অ্যাপ রিস্টার্ট হলে, অপ্টিমাইজ করা রিসিডিউলিং পারফর্ম্যান্স।
- প্রদত্ত
WorkRequestএনকিউ করার আগে বা পরেTestScheduler.setAllConstraintsMet(UUID)কল করার অনুমতি দেওয়া হয়েছে। b/111238024
ব্রেকিং পরিবর্তন
WorkManager.getInstance()এখন@Nullable-এর পরিবর্তে@NonNull-এর সাথে অ্যানোটেট করা হয়েছে।Data.getString()-এর সিগনেচার পরিবর্তন করা হয়েছে যাতে এটি আর ডিফল্ট ভ্যালু না নেয় (এটি অন্তর্নিহিতভাবেnull)।- শুধুমাত্র ইন্টার্নাল ব্যবহারের জন্য প্রয়োজনীয় কিছু পদ্ধতি
@hideহিসেবে চিহ্নিত করা হয়েছে। এর মধ্যেConstraintsকনস্ট্রাক্টর,Data.toByteArray()ওData.fromByteArray(byte[])অন্তর্ভুক্ত।
১৯ জুলাই, ২০১৮
নেভিগেশন
Navigation 1.0.0-alpha04 এবং সংশ্লিষ্ট Safe Args গ্রেডেল প্লাগ-ইনে বেশ কিছু API পরিবর্তন, আচরণগত পরিবর্তন এবং ত্রুটি সমাধান করা হয়েছে।
API / আচরণে পরিবর্তন
- NavHostFragment সবসময় বর্তমান ফ্র্যাগমেন্টকে প্রাথমিক নেভিগেশন ফ্র্যাগমেন্ট হিসেবে সেট করবে, যাতে বাইরের NavController পপ করার আগে চাইল্ড ফ্র্যাগমেন্ট ম্যানেজার পপ করা হয় b/111345778
Safe Args
- ব্রেকিং পরিবর্তন: ConstraintLayout 2.0.0-alpha1 b/111110548-এর মতো অন্যান্য লাইব্রেরির সাথে বিরোধ এড়াতে
app:type-কেapp:argType-এ পরিবর্তন করা হয়েছে - Safe Args থেকে পাওয়া সমস্যার মেসেজ এখন ক্লিক করা যাবে b/111534438
- Args ক্লাস এখন কনফার্ম করে যে
NonNullঅ্যাট্রিবিউট আসলে ফাঁকা নয় b/111451769 - NavDirections এবং Args জেনারেট করা ক্লাসে অতিরিক্ত
NonNullঅ্যানোটেশন যোগ করা হয়েছে b/111455455 b/111455456
ত্রুটি সমাধান
- ফ্র্যাগমেন্ট ডেস্টিনেশনে ডিপ লিঙ্ক করার পরে সিস্টেমের 'ফিরে যান' বোতামে হওয়া সমস্যার সমাধান করা হয়েছে b/111515685
১২ জুলাই, ২০১৮
নেভিগেশন
Navigation 1.0.0-alpha03 এবং সংশ্লিষ্ট Safe Args গ্রেডেল প্লাগ-ইনে বেশ কিছু API পরিবর্তন, আচরণগত পরিবর্তন এবং ত্রুটি সমাধান করা হয়েছে।
API / আচরণে পরিবর্তন
- টুলবারের জন্য NavigationUI.setupWithNavController পদ্ধতি যোগ করা হয়েছে b/109868820
- CollapsingToolbarLayout-এর জন্য NavigationUI.setupWithNavController পদ্ধতি যোগ করা হয়েছে b/110887183
- ব্যাক স্ট্যাক খালি থাকলে বা প্রদত্ত গন্তব্য আইডি ব্যাক স্ট্যাকে না থাকলে popBackStack() এখন false রিটার্ন করে b/110893637
- FragmentManager স্টেট সেভ করার পরে FragmentNavigator এখন নেভিগেশন অপারেশন উপেক্ষা করে, "onSaveInstanceState-এর পরে এই অ্যাকশন করা যাবে না" ব্যতিক্রম এড়িয়ে যায় b/110987825
Safe Args
- ব্রেকিং পরিবর্তন: অ্যাকশন ও আর্গুমেন্টের নামে আলফানিউমেরিক নয় এমন অক্ষর থাকলে, সংশ্লিষ্ট NavDirections মেথডের নামে ক্যামেল কেসিং দিয়ে তা পরিবর্তন করা হবে
- যেমন,
DemoController.index-এর পরিবর্তেsetDemoControllerIndexb/79995048 হয়ে যাবে - যেমন,
action_show_settingsহয়ে যাবেactionShowSettingsb/79642240
- যেমন,
- ব্রেকিং পরিবর্তন: আর্গুমেন্ট এখন ডিফল্ট হিসেবে নন-নাল হিসেবে বিবেচনা করা হয়। স্ট্রিং ও পার্সেল করা যায় এমন আর্গুমেন্টে ফাঁকা ভ্যালুর অনুমতি দিতে,
app:nullable="true"b/79642307 যোগ করুন - আপনি এখন “123L” b/79563966 ফর্ম্যাটে defaultValues সহ
app:type="long"ব্যবহার করতে পারবেন - পার্সেল করা যায় এমন আর্গুমেন্ট এখন কাজ করে,
app:type-এর জন্য সম্পূর্ণভাবে উপযুক্ত ক্লাস নাম ব্যবহার করে। শুধুমাত্র"@null"b/79563966 ডিফল্ট ভ্যালু হিসেবে কাজ করে - Args ক্লাস এখন
equals()এবংhashCode()প্রয়োগ করে b/79642246 - Safe Args প্লাগ-ইন এখন লাইব্রেরি প্রোজেক্টে প্রয়োগ করা যাবে b/80036553
- Safe Args প্লাগ-ইন এখন ফিচার প্রোজেক্টে প্রয়োগ করা যাবে b/110011752
ত্রুটি সমাধান
- ফ্র্যাগমেন্ট লাইফসাইকেল মেথড চলাকালীন নেভিগেট করার সময় হওয়া সমস্যার সমাধান করা হয়েছে b/109916080
- নেস্টেড গ্রাফের মাধ্যমে একাধিকবার নেভিগেট করার সময় হওয়া সমস্যার সমাধান করা হয়েছে b/110178671
- গ্রাফে প্রথম গন্তব্যের সাথে
setPopUpToব্যবহার করার সময় হওয়া সমস্যার সমাধান করা হয়েছে b/109909461 - সব
app:defaultValueভ্যালু স্ট্রিং হিসেবে পাস করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/110710788 - Android Gradle প্লাগ-ইন 3.2 বিটা 01-এর সাথে বান্ডেল করা aapt2 এখন নেভিগেশন XML ফাইলে প্রতিটি
android:nameঅ্যাট্রিবিউটের জন্য নিয়ম রাখার সুবিধা যোগ করে b/79874119 - ডিফল্ট FragmentNavigator b/110900142 পরিবর্তন করার সময় মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে
২ জুলাই, ২০১৮
Lifecycle, Room ও Paging-এর AndroidX ভার্সন 2.0.0-beta01 ভার্সন রিলিজ করে।
জীবনচক্র
ত্রুটি সমাধান
- শুধু ইমপ্লিমেন্টেশন রাখার জন্য LifecycleObserver proguard নিয়ম ফিক্স করা হয়েছে, সাবইন্টারফেস নয় b/71389427
- ViewModel proguard-এর নিয়ম ঠিক করা হয়েছে যাতে অবফাসকেশন ও সঙ্কোচন করা যায়
রুম
API / আচরণে পরিবর্তন
- কোয়েরি কোথায় রান করা হবে তা কাস্টমাইজ করার অনুমতি দিতে
RoomDatabase.Builder.setQueryExecutor()যোগ করা হয়েছে - RxJava2
Observable-এর জন্য সহায়তা যোগ করা হয়েছে - জেনারেট করা DAO এবং ডেটাবেস ইমপ্লিমেন্টেশন এখন চূড়ান্ত
ত্রুটি সমাধান
- "cannot find getter for field" সমস্যার মেসেজে ক্লাস/ফিল্ডের নাম উল্লেখ করুন b/73334503
- Room-এর পুরনো ভার্সনের সাথে RoomOpenHelper-এর ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/110197391
পেজিং
ত্রুটি সমাধান
- কিছু প্রিপেন্ড কেসে (প্লেসহোল্ডার বন্ধ করা, PositionalDataSource) কন্টেন্ট অদৃশ্য হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে b/80149146
- (
1.0.1-এ আগেই রিলিজ করা হয়েছে) ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানেPagedListAdapterএবংAsyncPagedListDifferমুভ ইভেন্ট সিগন্যাল করতে ব্যর্থ হয়। b/110711937
২৬ জুন, ২০১৮
পেজিং
runtime-এ একটিমাত্র বাগ ফিক্স সহ পেজিং 1.0.1 রিলিজ করা হয়েছে। আমরা আপনাকে স্টেবিলিটির জন্য 1.0.1 ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করি। Paging RxJava2 1.0.1-ও রিলিজ করা হয়েছে এবং এটি 1.0.0-rc1-এর মতোই।
ত্রুটি সমাধান
- ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে
PagedListAdapterএবংAsyncPagedListDifferমুভ ইভেন্ট সিগন্যাল করতে ব্যর্থ হবে। b/110711937
WorkManager
WorkManager 1.0.0-alpha04 রিলিজ করা হয়েছে।
ত্রুটি সমাধান
AlarmManagerভিত্তিক ইমপ্লিমেন্টেশন ব্যবহার করার সময়PeriodicWorkRequestএখন সঠিকভাবে রিশিডিউল করা হয়েছে।জোর করে বন্ধ বা রিবুট করার পরে সব ওয়ার্কারকে আবার শিডিউল করার সময় সম্ভাব্য ANR-এর সমস্যার সমাধান করা হয়েছে। b/110507716
বিভিন্ন WorkManager API-তে নালেবিলিটি অ্যানোটেশন যোগ করা হয়েছে। b/110344065
Worker এক্সিকিউশনের সময় আগে বোঝা যায়নি এমন সমস্যা চিহ্নিত করে সরিয়ে দিন। b/১০৯৯০০৮৬২
আপনি WorkManager-এর পুরনো ভার্সনে ফিরে যাওয়ার সিদ্ধান্ত নিলে, ডেস্ট্রাক্টিভ ডেটাবেস মাইগ্রেশনের অনুমতি দেওয়া হয়েছে। b/74633270
ডুপ্লিকেট ইমপ্লিসিট ট্যাগ তৈরি করার সময় মাইগ্রেশন ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে। এটি খুব বিরল সমস্যা যা শুধুমাত্র তখনই ঘটে যদি আপনি নিজেই একই ইমপ্লিসিট ট্যাগ ফর্ম্যাট ব্যবহার করেন।
১৯ জুন, ২০১৮
রুম
1.1.1 রুম রিলিজ করা হয়েছে। এই রিলিজটি রুম 1.1.1-rc1-এর মতো একই।
WorkManager
WorkManager 1.0.0-alpha03 রিলিজ করা হয়েছে।
ত্রুটি সমাধান
AlarmManagerভিত্তিক ইমপ্লিমেন্টেশনে রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/80346526.ডিভাইস রিবুট করার পরে
JobSchedulerব্যবহার করার সময় ডুপ্লিকেট জব সংক্রান্ত সমস্যার সমাধান করা হয়েছে।কন্টেন্ট URI ট্রিগার সহ জব এখন রিবুট করার পরেও থেকে যায়। b/৮০২৩৪৭৪৪
ডকুমেন্টেশন আপডেট। b/109827628, b/109758949, b/80230748
WorkRequestআবার এনকিউ করার সময় ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে। b/১০৯৫৭২৩৫৩.work-runtime-ktxডিপেন্ডেন্সি ব্যবহার করার সময় Kotlin কম্পাইলার সংক্রান্ত সতর্কতা ঠিক করা হয়েছে।WorkManager এখন
Roomভার্সন1.1.1-rc1ব্যবহার করে।
API-তে পরিবর্তন
getStatusesSync()যোগ করা হয়েছে, এটিWorkContinuation.getStatuses()-এর সিঙ্ক্রোনাস ভার্সন।Worker-এর কাছে ব্যবহারকারীর শুরু করা বাতিলকরণ এবং সাময়িক OS-অনুরোধ করা বন্ধ করার মধ্যে পার্থক্য করার ক্ষমতা আছে। কোনও ধরনের স্টপ অনুরোধ করা হলেWorker.isStopped()trueরিটার্ন করে। কাজটি স্পষ্টভাবে বাতিল করা হলেWorker.isCancelled()trueরিটার্ন করে। b/79632247API 28-এ JobParameters#getNetwork()-এর জন্য সহায়তা যোগ করুন। এটি
Worker.getNetwork()-এর মাধ্যমে প্রকাশ করা হয়।Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)যোগ করা হয়েছে যাতে আপনিJobSchedulerবাAlarmManager-এ কতগুলি কাজ পাঠানো যেতে পারে তা এনফোর্স করতে পারেন। এটিWorkManager-কে আপনার উপলভ্য সবJobSchedulerস্লট নেওয়া থেকে আটকায়।Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)যোগ করা হয়েছে যাWorkManager-এর ব্যবহারের জন্য নিরাপদJobSchedulerজব আইডির রেঞ্জ নির্ধারণ করতে সাহায্য করে। b/79996760Worker.getRunAttemptCount()কোনও নির্দিষ্টWorker-এর জন্য বর্তমান রান কাউন্ট দেখায়। b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)আপনাকে একটি অনন্যPeriodicWorkRequestকিউতে যোগ করার অনুমতি দেয়। b/79600647WorkManager.cancelAllWork()সবWorkerবাতিল করে দেয়।WorkManager-এর উপর নির্ভর করে এমন লাইব্রেরি, ইন্টার্নাল স্টেট আরও পরিষ্কার করার জন্যWorkManager.getLastCancelAllTimeMillis()ব্যবহার করে এই পদ্ধতি শেষবার কখন কল করা হয়েছিল তা কোয়েরি করতে পারে।ইন্টার্নাল ডেটাবেস থেকে সম্পূর্ণ হওয়া কাজ সরিয়ে দিতে
WorkManager.pruneWork()যোগ করা হয়েছে। b/79950952, b/109710758
আচরণে পরিবর্তন
- সব
WorkRequest-এর জন্য একটি ইমপ্লিসিট ট্যাগ যোগ করা হয়েছে, যা হলWorker-এর জন্য সম্পূর্ণ কোয়ালিফায়েড ক্লাস নেম। This allows the ability to removeWorkRequests withouttags or when theidis not available. b/109572351
ব্রেকিং পরিবর্তন
Worker.WorkerResult-এর নাম পরিবর্তন করেWorker.Resultকরা হয়েছে।Worker.onStopped-এ এখন একটি অতিরিক্তisCancelledপ্যারামিটার আছে যাtrue-এ সেট করা হয় যখনWorkerস্পষ্টভাবে বাতিল করা হয়।
৭ জুন, ২০১৮
1.0.0-alpha02 নেভিগেশন রিলিজ করা হয়েছে।
নেভিগেশন
আচরণে পরিবর্তন
FragmentNavigatorএখনsetReorderingAllowed(true)ব্যবহার করে। b/109826220নেভিগেশন এখন ডিপ লিঙ্ক URL থেকে পার্স করা আর্গুমেন্ট URLDecode করে। b/79982454
ত্রুটি সমাধান
ফ্র্যাগমেন্ট লাইফসাইকেল পদ্ধতি থেকে নেভিগেট কল করার সময়
IllegalStateExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79632233অ্যানিমেশন ব্যবহার করার সময় স্ক্রিন যাতে ফ্লিকার না করে তার জন্য নেভিগেশন এখন Support Library 27.1.1-এর উপর নির্ভর করে। b/80160903
চাইল্ড ফ্র্যাগমেন্ট হিসেবে defaultNavHost="true" ব্যবহার করার সময়
IllegalArgumentExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79656847NavDeepLinkBuilder ব্যবহার করার সময়
StackOverflowErrorসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/109653065নেস্টেড গ্রাফে ফিরে যাওয়ার সময়
IllegalArgumentExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/80453447launchSingleTopব্যবহার করার সময় ওভারল্যাপ করা ফ্র্যাগমেন্ট সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79407969নেভিগেশন এখন নেস্টেড গ্রাফের জন্য সঠিক সিন্থেটিক ব্যাক স্ট্যাক তৈরি করে। b/79734195
MenuItemহিসেবে নেস্টেড গ্রাফ ব্যবহার করার সময় NavigationUI এখন সঠিক আইটেম হাইলাইট করবে। b/109675998
API-তে পরিবর্তন
NavOptions-এ অ্যাকশনের জন্যclearTaskঅ্যাট্রিবিউট এবং সংশ্লিষ্ট API বন্ধ করে দেওয়া হয়েছে। b/80338878NavOptions-এ অ্যাকশনের জন্যlaunchDocumentঅ্যাট্রিবিউট এবং সংশ্লিষ্ট API বন্ধ করা হয়েছে। b/109806636
২৪ মে, ২০১৮
WorkManager 1.0.0-alpha02 রিলিজ করা হয়েছে।
WorkManager
ত্রুটি সমাধান
State.isFinished()-এNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79550068Worker-এর শিডিউলApplication.onCreate()-এ পরিবর্তন হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। b/79660657OS-এর অনুমোদিত সীমার চেয়ে বেশি কাজ শিডিউল করার সমস্যা সমাধান করা হয়েছে। b/79497378
Worker-এর সাথে যুক্ত ওয়েক লক ক্লিন-আপ ব্যাকগ্রাউন্ড থ্রেডে সরানো হয়েছে।AlarmManagerপ্রয়োগ করার ফলে এখন সমস্ত বাকি থাকা কাজ সম্পূর্ণ হলে সঠিকভাবে ক্লিন আপ করে।ইংরেজি ছাড়া অন্য ভাষার ক্ষেত্রে ক্লিন-আপ SQL কোয়েরি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/80065360
Data-এfloat-এর জন্য সহায়তা যোগ করা হয়েছে। b/79443878Data.Builder.putAll()এখনBuilder-এর একটি ইনস্ট্যান্স ফিরিয়ে দেয়। b/79699162ডকুমেন্টেশনে আরও javadoc এবং সমাধান। b/79691663
API-তে পরিবর্তন
Workerবন্ধ হয়ে গেলে প্রতিক্রিয়া জানাতে পারে।Workerবন্ধ করা হয়েছে কিনা তা চেক করতেWorker.isStopped()ব্যবহার করা যেতে পারে।Worker.onStopped()-এর মাধ্যমে হালকা ক্লিনআপ অপারেশন করা যেতে পারে।Worker.getTags()API,Worker-এর সাথে যুক্ত ট্যাগেরSetরিটার্ন করে।API-এর জন্য
javax.time.Durationওভারলোড যোগ করা হয়েছে যা সময়সীমা ওTimeUnit-এর কম্বিনেশন নেয়। এটি@RequiresApi(26)দ্বারা সুরক্ষিত।WorkManagerটি এক্সটেনশনandroidx.work.ktxপ্যাকেজ থেকেandroidx.workপ্যাকেজে সরানো হয়েছে। পুরনো এক্সটেনশন বন্ধ করা হয়েছে এবং ভবিষ্যতের ভার্সনে এটি সরিয়ে দেওয়া হবে।Configuration.withExecutor()বন্ধ করা হয়েছে। পরিবর্তেConfiguration.setExecutor()ব্যবহার করুন।
১৬ মে, ২০১৮
Paging RxJava2 1.0.0-rc1 এবং Room 1.1.1-rc1 রিলিজ করা হয়েছে। আপনি যদি মাইগ্রেশন ব্যবহার করেন, তাহলে আমরা 1.1.0-এর পরিবর্তে Room 1.1.1-rc1 ব্যবহার করার জন্য বিশেষভাবে
সাজেস্ট করি।
রুম
একটি সমস্যার সমাধান করা হয়েছে যেখানে রুম পোস্ট মাইগ্রেশন ইনিশিয়ালাইজেশন সঠিকভাবে ম্যানেজ করতে পারছিল না b/79362399
পেজিং
পেজিং rxjava2 রিলিজ ক্যান্ডিডেটে সরানো হচ্ছে, প্রাথমিক আলফা থেকে কোনও পরিবর্তন করা হয়নি।
৮ মে, ২০১৮
Paging 1.0, Navigation and WorkManager Alphas, Room 1.1, AndroidX
পেজিং 1.0.0 এবং রুম 1.1.0 রিলিজ করা হয়েছে,
এর সাথে দুটি নতুন আর্কিটেকচার কম্পোনেন্টের আলফা ভার্সনও রিলিজ করা হয়েছে - নেভিগেশন এবং WorkManager।
লেটেস্ট রিলিজ ক্যান্ডিডেট থেকে পেজিং ও রুমের ক্ষেত্রে কোনও পরিবর্তন হয়নি।
নতুন লাইব্রেরি: নেভিগেশন
নেভিগেশন অ্যাপ-মধ্যস্থ নেভিগেশন তৈরি করার জন্য একটি ফ্রেমওয়ার্ক প্রদান করে। এই প্রাথমিক রিলিজ হল 1.0.0-alpha01।
নতুন লাইব্রেরি: WorkManager
WorkManager গ্যারান্টিযুক্ত, সীমাবদ্ধতা-সচেতন ব্যাকগ্রাউন্ড কাজের
শিডিউলিং এবং এক্সিকিউশনকে সহজ করে তোলে। এই প্রাথমিক রিলিজ হল
1.0.0-alpha01।
AndroidX
আর্কিটেকচার কম্পোনেন্ট AndroidX-এর অংশ হতে চলেছে, যার মধ্যে রয়েছে আপডেট করা
প্যাকেজের নাম, আর্টিফ্যাক্টের নাম এবং অন্যান্য AndroidX লাইব্রেরির উপর নির্ভরতা।
অন্যান্য AndroidX লাইব্রেরির সাথে ব্যবহার করার জন্য এগুলি ভার্সন 2.0.0-alpha1-এর অধীনে রিলিজ করা হয়েছে।
Kotlin এক্সটেনশন
ViewModel, ReactiveStreams এবং Sqlite (আগে Room-এর 'ডেটাবেস' কম্পোনেন্ট) সবকটিতেই AndroidX আলফা রিলিজের অংশ হিসেবে Kotlin এক্সটেনশন লাইব্রেরি যোগ করা হয়েছে। এছাড়াও, Navigation ও WorkManager-এ -ktx মডিউল অন্তর্ভুক্ত। এইসব এক্সটেনশন মডিউলের প্রত্যেকটি কম্পোনেন্ট যোগ করা বিকল্পে পাওয়া যাবে।
২ মে, ২০১৮
- Room 1.1.0 রিলিজ ক্যান্ডিডেট
1.1.0-rc1রুম রিলিজ করা হয়েছে।
ত্রুটি সমাধান
- Room এখন Kotlin
1.2.40-এর সাথে মানানসই। b/78328708
১৯ এপ্রিল, ২০১৮
পেজিং রিলিজ ক্যান্ডিডেট
পেজিং 1.0.0-rc1 এবং রুম 1.1.0-beta3 রিলিজ করা হয়েছে।
পেজিং
Paging 1.0.0 রিলিজের জন্য আমাদের কাছে আর কোনও পরিচিত সমস্যা বা নতুন ফিচার শিডিউল করা নেই। 1.0.0-rc1 ব্যবহার করতে আপনার প্রোজেক্ট আপগ্রেড করুন এবং
এটি পরীক্ষা করতে আমাদের সাহায্য করুন যাতে আমরা একটি শক্তিশালী 1.0.0 শিপ করতে পারি।
এই রিলিজে কোনও পরিবর্তন করা হয়নি, এটি 1.0.0-beta1-এর মতোই।
রুম
ত্রুটি সমাধান
- Kotlin POJO, Java-তে সংজ্ঞায়িত করা কোনও রিলেশন এন্টিটিকে রেফারেন্স করলে, কম্পাইলেশন সংক্রান্ত সমস্যার সমাধান করা b/78199923
৫ এপ্রিল, ২০১৮
Room 1.1.0-beta2, Paging 1.0.0-beta1 এবং Paging RxJava 1.0.0-alpha1 রিলিজ করা হয়েছে।
রিলিজ ক্যান্ডিডেট হিসেবে প্রোগ্রেস করার আগে পেজিং অল্প সময়ের জন্য বিটা ভার্সনে থাকবে।
Paging 1.0-এর জন্য API-তে আর কোনও পরিবর্তন করার পরিকল্পনা আমাদের নেই এবং API-তে কোনও পরিবর্তন করার জন্য অনেক বেশি পরিশ্রম করতে হবে।
পেজিংয়ের জন্য Alpha RxJava2 সাপোর্ট আলাদা ঐচ্ছিক মডিউল (android.arch.paging:rxjava2:1.0.0-alpha1) হিসেবে রিলিজ করা হয়েছে
এবং এটি স্থিতিশীল না হওয়া পর্যন্ত সাময়িকভাবে আলাদাভাবে ভার্সন করা হবে।
এই নতুন লাইব্রেরি LivePagedListBuilder-এর RxJava2 বিকল্প প্রদান করে, যা Observable এবং Flowable তৈরি করতে পারে, Executor-এর পরিবর্তে Scheduler গ্রহণ করে:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
জাভা
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
পেজিং
নতুন ফিচার
- নতুন
android.arch.paging:rxjava2আর্টিফ্যাক্টের মাধ্যমেRxPagedListBuilderযোগ করা হয়েছে।
API-তে পরিবর্তন
বিল্ডারে এক্সিকিউটরের ভূমিকা স্পষ্ট করতে API পরিবর্তন:
setBackgroundThreadExecutor()-এর নাম পরিবর্তন করেsetFetchExecutor()করা হয়েছে (PagedList.BuilderএবংLivePagedListBuilder-এ)setMainThreadExecutor()-এর নাম পরিবর্তন করেsetNotifyExecutor()(PagedList.Builder-এ) করা হয়েছে।
PagedList.mCallbacksমেম্বারকে ব্যক্তিগত হিসেবে সেট করা হয়েছে।
ত্রুটি সমাধান
LivePagedListBuilder, Arch Components IO থ্রেড পুলের পরিবর্তে, নির্দিষ্ট এক্সিকিউটরে প্রাথমিকPagedListলোড ট্রিগার করে।ইন্টার্নাল
DataSourceর্যাপারে (DataSource.mapপ্রয়োগ করতে ব্যবহার করা হয়, সেইসাথে প্লেসহোল্ডার-বন্ধ করাPositionalDataSourceলোডিং) ইনভ্যালিডেট আচরণ ঠিক করা হয়েছে b/77237534
রুম
ত্রুটি সমাধান
রুমের Rx
SingleএবংMaybeইমপ্লিমেন্টেশনে একটি গুরুতর সমস্যার সমাধান করা হয়েছে, যেখানে এটি সময়ের আগেই কোয়েরি রিসাইকেল করে, যার ফলে আপনি ফেরত আসাSingleবাMaybeইনস্ট্যান্সে ১টির বেশি অবজারভার যোগ করলে সমস্যা হয়। b/76031240RoomDatabase.clearAllTables, ট্রানজ্যাকশনের মধ্যে কল করা হলে, ডেটাবেস
VACUUMকরবে না। b/77235565
২১ মার্চ, ২০১৮
Room 1.1.0-beta1, Paging 1.0.0-alpha7 এবং Lifecycles 1.1.1 রিলিজ করা হয়েছে।
রুম
API-তে পরিবর্তন
- API রিভিউ সংক্রান্ত মতামতের ভিত্তিতে,
@RawQueryআর কোয়েরি প্যারামিটার হিসেবেStringপাস করার অনুমতি দেয় না। আপনাকে SupportSQLiteQuery ব্যবহার করতে হবে। (আর্গুমেন্ট সাপোর্ট সহ SupportSQLiteQuery-এর ইনস্ট্যান্স সহজেই তৈরি করতে SimpleSQLiteQuery দেখুন)। - RoomDatabase.Builder-এর fallbackToDestructiveMigrationFrom পদ্ধতি এখন
vararg Integer-এর পরিবর্তেvararg intগ্রহণ করে।
ত্রুটি সমাধান
RoomDatabase.clearAllTables এখন WAL চেকপয়েন্ট সেট করে এবং ডেটাবেস
VACUUMকরে অপারেটিং সিস্টেমে স্পেস ফিরিয়ে দেওয়ার চেষ্টা করে।@RawQueryএখনobservedEntitiesপ্রপার্টির জন্য যেকোনও Pojo গ্রহণ করে, যতক্ষণ না Pojo তারEmbeddedফিল্ড বাRelation-এর মাধ্যমে এক বা একাধিক এন্টিটিকে রেফার করে। b/74041772পেজিং: রুমের DataSource ইমপ্লিমেন্টেশন এখন সঠিকভাবে মাল্টি-টেবিল ডিপেন্ডেন্সি (যেমন, রিলেশন ও জয়েন) ম্যানেজ করে। আগে এগুলি নতুন ফলাফল ট্রিগার করতে বা কম্পাইল করতে ব্যর্থ হত। b/74128314
লাইফসাইকেল
শুধু একটি ছোট পরিবর্তন: android.arch.core.util.Function, arch:runtime থেকে arch:common-এ সরানো হয়েছে। এটি রানটাইম ডিপেন্ডেন্সি ছাড়াই ব্যবহার করা যেতে পারে, যেমন নিচে paging:common-এ।
lifecycle:common হল lifecycle:runtime-এর উপর নির্ভরশীল, তাই এই পরিবর্তন সরাসরি lifecycle:runtime-কে প্রভাবিত করে না, শুধুমাত্র সেইসব মডিউলকে প্রভাবিত করে যেগুলি সরাসরি lifecycle:common-এর উপর নির্ভর করে, যেমন পেজিং করে।
পেজিং
Lifecycles 1.1.1-এর সাথে Paging 1.0.0-alpha7 রিলিজ করা হয়েছে। যেহেতু Paging alpha7 উপরে উল্লেখ করা Function ক্লাসের মুভের উপর নির্ভর করে, তাই আপনাকে lifecycle:runtime ডিপেনডেন্সি android.arch.lifecycle:runtime:1.1.1-এ আপডেট করতে হবে।
পেজিং বিটাতে আসার আগে পেজিং alpha7-এর ফাইনাল রিলিজের পরিকল্পনা করা হয়েছে।
API-তে পরিবর্তন
DataSource.LoadParamsঅবজেক্টে এখন পাবলিক কনস্ট্রাক্টর আছে এবংDataSource.LoadCallbackঅবজেক্ট এখন অ্যাবস্ট্রাক্ট। এটিDataSourceর্যাপ করা বা মক কলব্যাকের মাধ্যমে সরাসরিDataSourceটেস্ট করার সুবিধা দেয়। b/72600421- DataSource এবং DataSource.Factory-এর জন্য ম্যাপার
map(Function<IN,OUT>)আপনাকেDataSource-এর মাধ্যমে লোড করা ফলাফল ট্রান্সফর্ম, র্যাপ বা সাজাতে দেয়।mapByPage(<List<IN>,List<OUT>>)ব্যাচ প্রসেসিংয়ের জন্য একই সুবিধা দেয় (যেমন, SQL থেকে লোড করা আইটেম যদি অতিরিক্তভাবে আলাদা ডেটাবেস কোয়েরি করতে চায়, তাহলে সেটি ব্যাচ হিসেবে করা যেতে পারে।)
PagedList#getDataSource()is added as a convenience method b/72611341- API থেকে সব বাতিল করা ক্লাস সরিয়ে দেওয়া হয়েছে, যার মধ্যে
recyclerview.extensionsপ্যাকেজের অবশিষ্টাংশ এবংLivePagedListProviderঅন্তর্ভুক্ত। - ম্যাপের কার্যকারিতা চালু করতে
DataSource.Factoryইন্টারফেস থেকে অ্যাবস্ট্রাক্ট ক্লাসে পরিবর্তন করা হয়েছে।
ত্রুটি সমাধান
- Changed Builders to be final. b/70848565
- মাল্টি-টেবিল কোয়েরি ম্যানেজ করার জন্য Room
DataSourceইমপ্লিমেন্টেশন এখন ঠিক করা হয়েছে - এই সমাধান Room 1.1.0-beta1-এর মধ্যে রয়েছে, উপরে দেখুন। - একটি সমস্যার সমাধান করা হয়েছে যেখানে প্লেসহোল্ডার চালু থাকলে এবং মোট সাইজ পৃষ্ঠা সাইজের সঠিক গুণিতক হলে
PositionalDataSource-এর জন্যBoundaryCallback.onItemAtEndLoadedইনভোক করা হবে না।
২ মার্চ, ২০১৮
1.1.0-alpha3 রুম রিলিজ করা হয়েছে। Room 1.1.0-এর জন্য এটিই শেষ পরিকল্পিত আলফা রিলিজ।
API-তে পরিবর্তন
InvalidationTracker-এর
addObserverএবংremoveObserverমেথড এখন সিঙ্ক্রোনাস এবং নন-UI থ্রেডে কল করতে হবে। এটি টেবিল দেখার সময় কিছু রেস কন্ডিশন প্রতিরোধ করে।RoomDatabase ক্লাসে একটি নতুন
clearAllTables()পদ্ধতি আছে যা সব টেবিল কন্টেন্ট ট্রাঙ্কেট করবে। b/63807999SupportSQLiteQuery-এ এখন একটিgetArgCount()পদ্ধতি আছে যা কোয়েরি প্যারামিটারের সংখ্যা রিটার্ন করে। b/67038952
ত্রুটি সমাধান
@RawQueryএখন পেজিং কোয়েরির জন্য সঠিকভাবে কাজ করে। b/৭২৬০০৪২৫২ বা তার বেশি
Daoইন্টারফেস একই প্যাকেজে ইনার ক্লাস হিসেবে থাকলে এবং একই নাম হলে, নামের মধ্যে দ্বন্দ্ব এড়াতে, Room এখন সঠিকভাবে জেনারেট করাDaoক্লাসের নাম দেয়। b/73536380Pojo-এ জেনেরিক ফিল্ডের ধরন এক্সটেন্ডিং ক্লাসের মেম্বার হিসেবে সঠিকভাবে পার্স করা হয়েছে। b/73534868Daoইন্টারফেসে কোয়েরি প্যারামিটার যা ডিপেন্ডেন্সি আর্টিফ্যাক্ট থেকে ইনহেরিট করা হয়েছে, সেগুলি এখন সঠিকভাবে পার্স করা হয়েছে। b/68118746@Relation-এর জন্য জেনারেট করা কোয়েরি এখন ফিল্ডের নাম সঠিকভাবে এড়িয়ে যায়। b/70925483
২৭ ফেব্রুয়ারি, ২০১৮
সাপোর্ট লাইব্রেরি রিলিজ 27.1.0-এর সাথে পেজিং 1.0.0-alpha6 রিলিজ করা হয়েছে।
ListAdapter এবং কিছু সম্পর্কিত ক্লাস পেজিং লাইব্রেরি থেকে সরাসরি Recyclerview-এ সরানো হয়েছে, পাশাপাশি নির্দিষ্ট ক্লাসের ফাংশন আরও স্পষ্ট করার জন্য কিছু নাম পরিবর্তন করা হয়েছে। পেজিংয়ের এই আলফা রিলিজটি সম্ভবত শেষবার উল্লেখযোগ্য API ব্রেকিং পরিবর্তন করেছে।
API-তে পরিবর্তন
- ক্লাস recyclerview-v7-এ সরানো হয়েছে:
ListAdapter
- ক্লাসের নাম পরিবর্তন করা হয়েছে এবং recyclerview-v7-এ সরানো হয়েছে:
ListAdapterHelper->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->DiffUtil.ItemCallback
- paging-runtime-এর মধ্যে ক্লাসের নাম পরিবর্তন করা হয়েছে:
PagedListAdapterHelper->AsyncPagedListDiffer
যে ক্লাসগুলি সরানো হয়েছে সেগুলি RecyclerView-এর পাশাপাশি পেজিং লাইব্রেরি থেকে স্বাধীনভাবে কার্যকর ছিল। এর অর্থ হল, পেজিং আলফা রিলিজের উপর নির্ভর না করেই এগুলি ব্যবহার করা যেতে পারে, তবে এর অর্থ এই যে পেজিং ব্যবহার করা অ্যাপগুলিকে অবশ্যই আলফা ৬ এবং সাপোর্ট লাইব্রেরি ২৭.১.০-এ একই সাথে আপগ্রেড করতে হবে।
** পেজিং Alpha6-এর জন্য মাইগ্রেশন গাইড: **
android.arch.paging:runtime:1.0.0-alpha6এবংcom.android.support:recyclerview-v7:27.1.0-এ পেজিং এবং রিসাইকেলারভিউ ডিপেন্ডেন্সি আপডেট করুন- এগুলি একসাথে করতে হবে, কারণ ListAdapter-কে পেজিং থেকে RecyclerView-তে সরানো হয়েছে
ListAdapterHelper-এর যেকোনও রেফারেন্সAsyncListDiffer-এ আপডেট করুনgetItem(index)/getItemCount()সরিয়ে দেওয়া হয়েছে, যাতেgetCurrentList().getItem(index)এবংgetCurrentList().size()কল করার প্যাটার্ন আরও স্পষ্ট হয়।
ListAdapterConfig-এর যেকোনও রেফারেন্সAsyncDifferConfig-এ আপডেট করুনDiffCallback-এর যেকোনও রেফারেন্সDiffUtil.IttemCallback-এ আপডেট করুনPagedListAdapterHelper-এর যেকোনও রেফারেন্সAsyncPagedListDiffer-এ আপডেট করুনsetList()-এর রেফারেন্স আপডেট করেsubmitList()করুন- তালিকা ডিফারেন্সিংয়ের অ্যাসিঙ্ক প্রকৃতি স্পষ্ট করার জন্য নাম পরিবর্তন করা হয়েছে
ত্রুটি সমাধান
- প্লেসহোল্ডার বন্ধ করা থাকলে, প্রাথমিক লোডে ভুল প্রাথমিক পজিশন পাস করার সমস্যা সমাধান করা হয়েছে। b/73513780
১৫ ফেব্রুয়ারি, ২০১৮
1.1.0-alpha2 রুম রিলিজ করা হয়েছে।
নতুন ফিচার
রুম এখন রাইট অ্যাহেড লগিং মোডে ডেটাবেস খোলার সুবিধা দেয়। এই মোডে, আপনার রাইট কোয়েরি আর রিড কোয়েরিকে ব্লক করবে না। যদিও এটি আরও বেশি মেমরি ব্যবহার করে (একাধিক কানেকশনের কারণে), এই মোড সাধারণত আরও দ্রুত কাজ করে। ডিফল্ট হিসেবে, ডিভাইস
API 16বা তার পরবর্তী ভার্সন হলে এবং সেটি কম মেমরির ডিভাইস না হলে, Room, WAL ব্যবহার করবে। আপনিRoomDatabase.Builder-এsetJournalMode()পদ্ধতি ব্যবহার করে এই আচরণ নিয়ন্ত্রণ করতে পারবেন। b/67757002Guava সাপোর্ট: Room এখন
DAOকোয়েরিতে GuavaOptional<T>বাListenableFuture<T>রিটার্ন করা সাপোর্ট করে।ListenableFuture<T>ব্যবহার করতে, আপনাকে রুম থেকেguavaআর্টিফ্যাক্ট ইমপোর্ট করতে হবে (android.arch.persistence.room:guava:1.1.0-alpha2)।Room এখন
DAOকোয়েরি থেকেjava.util.Optional<T>রিটার্ন করতে পারে।ডিফল্ট ইমপ্লিমেন্টেশন সহ ইন্টারফেস পদ্ধতি এখন
DAOক্লাসের@Transactionপদ্ধতিতে কাজ করে। এটিJava 8এবংKotlin, দুটির ক্ষেত্রেই কাজ করে। b/72416735
ত্রুটি সমাধান
@Relationসহ কনস্ট্রাক্টর থাকলে কম্পাইলেশন সংক্রান্ত সমস্যা হবে না যদি ব্যবহার করার মতো অন্য কোনও কনস্ট্রাক্টর থাকে। b/72884434@Queryপদ্ধতিতে'দিয়ে এড়িয়ে যাওয়া টেবিলের নাম এখন ইনভ্যালিডেশন ট্র্যাকারের জন্য সঠিকভাবে এড়িয়ে যাওয়া হয়েছে। b/72366965Room এখন অ্যানোটেশন প্রসেসিংয়ের সময় ক্লাস স্ট্রাকচার পড়তে Kotlin
@Metadataঅ্যানোটেশন ব্যবহার করে। এর অর্থ হল, কোনও pojo ডিপেন্ডেন্সি থেকে ইনহেরিট করা হলেও, এর কনস্ট্রাক্টর প্যারামিটারের নাম সঠিকভাবে পড়া যাবে। b/৬৭১৮১৮১৩ডাউনগ্রেড মাইগ্রেশন পাথ খোঁজার সমস্যা সমাধান করা হয়েছে। b/72153525
বিদ্যমান ডেটাবেস থেকে রুমে মাইগ্রেট করার সময় ডিফল্ট নয় এমন কলামের ধরনগুলি এখন সঠিকভাবে পরিচালনা করা হয়। b/71953987
Kotlin ক্লাসে
boolean?ফিল্ড পারসিস্ট করার বিষয়টি Room এখন সঠিকভাবে ম্যানেজ করে। b/72786402
২২ জানুয়ারি, ২০১৮
Lifecycles 1.1.0, Room 1.1.0-alpha1 এবং Paging 1.0.0-alpha5 রিলিজ করা হয়েছে।
লাইফসাইকেল ১.১.০
প্যাকেজিং সংক্রান্ত পরিবর্তন
নতুন, অনেক ছোট ডিপেন্ডেন্সি এখন উপলভ্য:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
API-তে পরিবর্তন
- বন্ধ হয়ে যাওয়া
LifecycleActivityএবংLifecycleFragmentএখন সরিয়ে দেওয়া হয়েছে - অনুগ্রহ করেFragmentActivity,AppCompatActivityব্যবহার করুন অথবাFragment-এ সহায়তা নিন। @NonNullঅ্যানোটেশনViewModelProvidersওViewModelStores-এ যোগ করা হয়েছেViewModelProvidersকনস্ট্রাক্টর বন্ধ করা হয়েছে - সরাসরি এর স্ট্যাটিক পদ্ধতি ব্যবহার করুনViewModelProviders.DefaultFactoryবন্ধ করে দেওয়া হয়েছে -ViewModelProvider.AndroidViewModelFactoryব্যবহার করুন- স্ট্যাটিক
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)পদ্ধতি যোগ করা হয়েছে যাতে স্ট্যাটিকFactoryফিরিয়ে আনা যায় যাViewModelওAndroidViewModelইনস্ট্যান্স তৈরি করার জন্য উপযুক্ত।
Room 1.1.0-alpha1
নতুন ফিচার
RawQuery: This new API allows@Daomethods to receive the SQL as a query parameter b/62103290, b/71458963fallBackToDestructiveMigrationsFrom:RoomDatabase.Builder-এ এই নতুন API-এর মাধ্যমে কোন স্টার্টিং স্কিমা ভার্সন থেকে ডেস্ট্রাক্টিভ মাইগ্রেশন করা যাবে তা আরও সূক্ষ্মভাবে নিয়ন্ত্রণ করা যায় (fallbackToDestructiveMigration-এর তুলনায়) b/64989640- Room এখন শুধুমাত্র নতুন পেজিং API (alpha-4+) সাপোর্ট করে, পুরনো
LivePagedListProvider-এর জন্য সাপোর্ট বন্ধ করে দেয়। নতুন Room আলফা ব্যবহার করতে, আপনাকে পেজিংalpha-4বা তার পরবর্তী ভার্সন ব্যবহার করতে হবে এবং আপনি যদি এখনওLivePagedListProviderথেকেLivePagedListBuilder-এ পরিবর্তন না করে থাকেন, তাহলে তা করতে হবে।
ত্রুটি সমাধান
- Kotlin Kapt টাইপের জন্য উন্নত সহায়তা। b/৬৯১৬৪০৯৯
- ফিল্ডের ক্রম আর স্কিমাকে অবৈধ করে না। b/64290754
Paging 1.0.0-alpha5
ত্রুটি সমাধান
- প্লেসহোল্ডার বন্ধ করা থাকলে পৃষ্ঠা লোড হওয়া সংক্রান্ত সমস্যার সমাধান করা b/70573345
- IllegalArgumentException বাগ b/70360195 (এবং অনুমানমূলক রুম-সাইড সমাধান) ট্র্যাক করার জন্য অতিরিক্ত লগিং
- Javadoc স্যাম্পেল কোড সংক্রান্ত সমস্যার সমাধান b/70411933, b/71467637
১১ ডিসেম্বর, ২০১৭
পেজিং alpha4-1 রিলিজ করা হয়েছে। এটি পেজিং আলফা ৪-এর জন্য একটি ছোট বাগফিক্স রিলিজ।
ত্রুটি সমাধান
- ভুল ডেটা সোর্সের জন্য কলব্যাক প্যারামিটার চেক করবেন না। b/70353706, b/70360195
৭ ডিসেম্বর, ২০১৭
পেজিং alpha4 রিলিজ করা হয়েছে, এতে উল্লেখযোগ্য পরিবর্তন ও সংযোজন করা হয়েছে, যার বেশিরভাগই
নেটওয়ার্ক এবং নেটওয়ার্ক + ডেটাবেস ব্যবহারের ক্ষেত্রে প্রযোজ্য।
API-তে পরিবর্তন
DataSourceএখন একটি অ্যাসিঙ্ক API, যাতে নেটওয়ার্ক থেকে সরাসরি পেজিং করা সহজ হয়:- প্রাথমিক সাইজ ও ডেটার জন্য একটি এন্ট্রি পয়েন্ট
- কলব্যাক হোল্ড করে এবং পরে ডিসপ্যাচ করে নেটওয়ার্ক রিট্রাই করার সুবিধা দেয়
- থ্রেডসেফ কলব্যাক UI থ্রেডে সিঙ্গেল নেটওয়ার্ক ব্যাকড
PagedListতৈরি করার জন্য অ্যাসিঙ্ক লোডিংয়ের অনুমতি দেয়। - প্রাথমিক লোড প্যারামিটার সংক্রান্ত সমস্যার আচরণ আরও স্পষ্ট করা হয়েছে
TiledDataSource-এর নাম পরিবর্তন করেPositionalDataSourceকরা হয়েছে যাতে এর অবস্থান-ভিত্তিক ইন্ডেক্সিং এবং প্লেসহোল্ডার বন্ধ থাকলে এটি টাইল করে না, এই তথ্যটি প্রতিফলিত হয়।নেটওয়ার্ক পৃষ্ঠা লোডে এম্বেড করা পরবর্তী/পূর্ববর্তী টোকেনকে সাপোর্ট করার জন্য
PageKeyedDataSourceযোগ করা হয়েছে। পার্থক্য স্পষ্ট করতেKeyedDataSource-এর নাম পরিবর্তন করেItemKeyedDataSourceকরা হয়েছে।LivePagedListBuilderএবংDataSource.Factory,LivePagedListProvider-এর পরিবর্তে ব্যবহার করা হয়। বিল্ডার আরও কাস্টমাইজেশন ও সহজ ডিফল্ট সহ একই ক্ষমতা প্রদান করে। ফ্যাক্টরিDataSourceজেনারেশন কোডকেLiveDataথেকে স্বাধীন থাকতে দেয়।ডেটাবেস + নেটওয়ার্ক ব্যবহারের জন্য
PagedList.BoundaryCallbackযোগ করা হয়েছে।PagedList.Builderকনস্ট্রাক্টরDataSource+PagedList.Configনেয়, এখনLivePagedListBuilder-এর সাথে আরও বেশি মিল আছে এবং Java ভাষায় ডায়মন্ড অপারেটর অথবা Kotlin-এ ইনফার্ড টাইপ ব্যবহার করার অনুমতি দেয়।PagedList.getConfig()যোগ করা হয়েছে এবংPagedList.Config-এর এখন সর্বজনীন মেম্বার প্রপার্টি আছে।KeyedDataSource.loadBefore()আর ফলাফল উল্টে যাওয়ার আশা করে না।কোন PagedList দেখানো হচ্ছে সেই সংক্রান্ত আপডেট শোনার জন্য
PagedListAdapter.onCurrentListChanged()যোগ করা হয়েছে।
ত্রুটি সমাধান
- PagedListAdapter(Helper)-এ IndexOutOfBoundsException সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/67883658
1.0.0 - ৬ নভেম্বর, ২০১৭
সব প্রধান কম্পোনেন্ট (পেজিং ছাড়া) এখন 1.0.0। reactivestreams লাইব্রেরিতে একটি পরিবর্তন ছাড়া এটি rc1-এর মতো একই
রিলিজ।
ত্রুটি সমাধান
LiveDataReactiveStreamsএখন রিঅ্যাক্টিভ স্ট্রিম স্পেসিফিকেশন সঠিকভাবে প্রয়োগ করে। b/67999342
রিলিজ ক্যান্ডিডেট - ১৮ অক্টোবর, ২০১৭
সব প্রধান আর্টিফ্যাক্ট (পেজিং ছাড়া) এখন 1.0.0-rc1।
1.0.0 রিলিজের জন্য আমাদের কাছে আর কোনও পরিচিত সমস্যা বা নতুন ফিচার শিডিউল করা নেই। 1.0.0-rc1 ব্যবহার করতে আপনার প্রোজেক্ট আপগ্রেড করুন এবং
এটি পরীক্ষা করতে আমাদের সাহায্য করুন যাতে আমরা একটি শক্তিশালী 1.0.0 শিপ করতে পারি।
আচরণে পরিবর্তন
- এই রিলিজের সাথে,
onSaveInstanceStateকল করা হলে এখনLifecycle.Event#ON_STOPডিসপ্যাচ করা হয় (আগে, এটিON_STOPডিসপ্যাচ না করেই শুধুCREATEDহিসেবে চিহ্নিত করা হত)। আপনি এই বিষয়ে লাইফসাইকেল ডকুমেন্টেশন থেকে আরও জানতে পারবেন।
ত্রুটি সমাধান
রুম:
- রুম এখন লেটেস্ট xerial আর্টিফ্যাক্টের উপর নির্ভর করে যা কম্পাইলেশনের সময়
OutOfMemoryসমস্যার সমাধান করে। b/62473121 Queryটি পদ্ধতি এখন@Transactionদিয়ে অ্যানোটেট করা যাবে। বিস্তারিত জানতে@Transaction-এর রেফারেন্স ডকুমেন্ট দেখুন। b/৬৫১১২৩১৫- Room-এ
StringUtilক্লাস পাবলিক API থেকে সরিয়ে দেওয়া হয়েছে (এটি কখনও পাবলিক API হিসেবে ব্যবহার করার জন্য তৈরি করা হয়নি)।
- রুম এখন লেটেস্ট xerial আর্টিফ্যাক্টের উপর নির্ভর করে যা কম্পাইলেশনের সময়
লাইফসাইকেল:
API < 24-এ অ্যাক্টিভিটি আংশিকভাবে কভার করা থাকলে
LiveDataসঠিকভাবে কাজ করে। b/65665621প্যারেন্ট ক্লাসে
OnLifecycleEventমেথড এখন সঠিকভাবে কল করা হয় অথবা এটি সম্ভব না হলে কম্পাইলেশনের সময় একটি সতর্কতা প্রিন্ট করা হয়। b/63474615Lifecycle এখন
WeakReference-কে তার LifecycleOwner-এ ফিরিয়ে দেয় যাতে LifecycleOwner-এর তথ্য ফাঁস না হয়, যদি Lifecycle মেমরিতে স্বাভাবিকের চেয়ে বেশি সময় ধরে থাকে (এটি শুধু সতর্কতা, তবুও আপনাকে সতর্ক থাকতে হবে যাতেLifecycle-এর তথ্য ফাঁস না হয়)।
৯ অক্টোবর, ২০১৭
পেজিং alpha-3 রিলিজ করা হয়েছে; যা এটিকে beta 2
রিলিজ অফ লাইফসাইকেল এবং রুমের সাথে মানানসই করে তোলে।
ত্রুটি সমাধান
- উন্নত পেজিং ডকুমেন্টেশন।
৫ অক্টোবর, ২০১৭
সব প্রধান আর্টিফ্যাক্ট (পেজিং ছাড়া) এখন beta 2।
এই রিলিজে পেজিংয়ের কোনও নতুন ভার্সন নেই।
ত্রুটি সমাধান
লাইফসাইকেল:
LiveDataঅ্যাক্টিভ না থাকলে,LiveDataReactiveStreamsএখন সোর্স প্রকাশক থেকে সঠিকভাবে আনসাবস্ক্রাইব করে। b/62609183- পেরেন্ট ক্লাস অন্য মডিউল থেকে হলে, লাইফসাইকেল ইভেন্ট সঠিকভাবে পেরেন্ট ক্লাসে প্রোপাগেট করা হয়। b/63474615
- সাবস্ক্রিপশন তৈরি করার সময় সাবস্ক্রাইবাররা আনসাবস্ক্রাইব করলে, LiveData সঠিকভাবে অবজার্ভারদের হ্যান্ডেল করে। b/66337741
Java 8 ল্যাঙ্গুয়েজ আর্টিফ্যাক্টের জন্য
FullLifecycleObserverএখন ডিপেন্ডেন্সি ট্রিতে উপলভ্য। b/৬৬৫২৫৫৭৮প্রোগার্ডের জন্য, আপনার প্রোগার্ড ফাইলে নিম্নলিখিত লাইনগুলি যোগ করুন। (1.0.0 শিপ করার সময় এটির প্রয়োজন হবে না)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
রুম:
@Queryপদ্ধতিতে ফেরত আসা Pojo-তে@NonNullফিল্ড থাকলে, কোয়েরি উত্তরে কোনও কলামের সাথে তা ম্যাচ না করলে, Room এখন কম্পাইল করার সময় একটি সমস্যা প্রিন্ট করে। ফিল্ডটি@Nullableহলে, Room only একটি সতর্কতা প্রিন্ট করে। b/67115337- রুম এখন নতুন OS ভার্সনে ইন্ডেক্স যাচাই করে। b/63132683
- Pojo-তে একাধিক ম্যাচিং কনস্ট্রাক্টর থাকলে, ডিফল্ট হিসেবে রুম নো-আর্গ কনস্ট্রাক্টর বেছে নেয়। b/67353427
- সিঙ্গেল কলাম প্রাইমারি কী
Nullableহতে পারে যদি এটিIntegerবাLongহয়। b/67086876 - ইনভ্যালিডেশন ট্র্যাকার টেস্ট মোডে আবার এন্ট্রি করার বিষয়টি সঠিকভাবে ম্যানেজ করে। b/65471397
- কম্পাইল করার সময় Room এখন কলাম ও টেবিলের নামে ভুল অক্ষর আছে কিনা তা চেক করে (ভুল অক্ষর:
`,")। b/৬৪৭৪৯১১১
২১ সেপ্টেম্বর, ২০১৭
এই রিলিজের মাধ্যমে, সব আর্কিটেকচার কম্পোনেন্ট মডিউল অন্তত beta 1-এ পৌঁছে যায়
(নতুন পেজিং লাইব্রেরি ছাড়া, যা হল alpha 2)।
আমরা API-তে আর কোনও পরিবর্তন করার পরিকল্পনা করছি না। অপ্রত্যাশিত পরিবর্তন হতে পারে, তবে 1.0.0 স্টেবল হওয়ার আগে কোনও API পরিবর্তন করার
সম্ভাবনা খুবই কম।
1.0.0স্টেবল হওয়ার আগে LifecycleActivity ও LifecycleFragment সরিয়ে দেওয়া হবে। এগুলি ব্যবহার করার প্রয়োজন নেই, যদি আপনি সাপোর্ট লাইব্রেরি26.1.0বা তার পরবর্তী ভার্সন ব্যবহার করেন।
আলফা ফেজের মতো নয়, বিটা ফেজ খুব কম সময়ের জন্য শিডিউল করা হয়।
ভার্সনে পরিবর্তন
- লাইফসাইকেল এক্সটেনশন এবং রুম এখন
beta 1 - পেজিং এখন
alpha 2 - লাইফসাইকেল (রানটাইম, সাধারণ) এবং আর্চ কোর (সাধারণ)-এ কোনও পরিবর্তন নেই। এই দুটি আর্টিফ্যাক্টই
১৩ সেপ্টেম্বর থেকে
1.0.0ভার্সন।
নতুন আর্টিফ্যাক্ট
লাইফসাইকেলে এখন
common-java8নামে একটি নতুন আর্টিফ্যাক্ট আছে। এই আর্টিফ্যাক্টে DefaultLifecycleObserver নামে একটি নতুন ইন্টারফেস আছে; যেটিতে সব লাইফসাইকেল পদ্ধতির জন্য ডিফল্ট ইমপ্লিমেন্টেশন আছে। আপনি Java 8 ভাষা ব্যবহার করলে, অ্যানোটেশনের পরিবর্তে এই আর্টিফ্যাক্ট ব্যবহার করা উচিত।beta1-এ একটি বাগের কারণে, নতুনcommon-java8আর্টিফ্যাক্ট ব্যবহার করতে আপনাকেandroid.arch.lifecycle:common:1.0.1মডিউলের উপর একটি স্পষ্ট নির্ভরতা যোগ করতে হবে। এই সমস্যাটিbeta2-এ সমাধান করা হবে।
প্যাকেজিং সংক্রান্ত পরিবর্তন
android.arch.persistence.room.db-কেandroid.arch.persistence.db-এ সরানো হয়েছেandroid.arch.persistence.room.db-implসরিয়ে নিয়ে যাওয়া হয়েছে এবং নাম পরিবর্তন করেandroid.arch.persistence.db-frameworkকরা হয়েছে
এই দুটি আর্টিফ্যাক্টই আগে থেকে Room-এর উপর নির্ভরশীল, তাই আপনি সরাসরি সেগুলি ব্যবহার না করলে, আপনার বিল্ড ফাইলে কিছু পরিবর্তন করার প্রয়োজন হবে না।
API-তে পরিবর্তন
রুম:
- @ColumnInfo অ্যানোটেশন এখন কলামে কোলেশন সেট করা সাপোর্ট করে। b/62007004
transientফিল্ড এখন ডিফল্ট হিসেবে উপেক্ষা করা হয়, যদি না সেগুলি@ColumnInfo,@Embeddedবা@Relationদিয়ে অ্যানোটেট করা হয়। b/62600692- অটোমেটিক জেনারেট না হলে, প্রাইমারি কী অবশ্যই
@NonNull-এর সাথে অ্যানোটেট করতে হবে। b/64292391- এই পরিবর্তনের জন্য স্কিমা মাইগ্রেশনের প্রয়োজন হতে পারে। আপনার অসুবিধার জন্য আমরা দুঃখিত।
- একটি নতুন সুবিধা অ্যানোটেশন (@Transaction) যোগ করা হয়েছে যা
DAOপদ্ধতি ওভাররাইড করে এবং ট্রানজ্যাকশনের মধ্যে এটি রান করে।
SQLite ডেটাবেস সাপোর্ট:
- ডেটাবেস কনফিগারেশনে API পরিবর্তন। b/৬৫৩৪৯৬৭৩ b/৬৫৪৯৯৮৭৬
পেজিং:
- আরও উদাহরণ ও থ্রেড অ্যানোটেশন সহ পেজিং ডকুমেন্টেশন উন্নত করা হয়েছে।
ত্রুটি সমাধান
- রুম:
@Queryপদ্ধতিতে Kotlin মাল্টি-লাইন স্ট্রিং সঠিকভাবে ম্যানেজ করা হয়। b/65809374
- পেজিং:
- পেজিং আর্টিফ্যাক্ট আর junit-এর উপর নির্ভর করে না। b/65690261
1.0.0 Alpha 9-1 - ১৩ সেপ্টেম্বর, ২০১৭
এটি একটি প্রধান রিলিজ যেখানে কোর লাইফসাইকেল আর্টিফ্যাক্ট (রানটাইম, সাধারণ) এবং আর্চ কোর (সাধারণ)
স্টেবল ভার্সন 1.0.0-এ পৌঁছায়।
এই পরিবর্তনের সাথে, Support Library 26.1.0 এখন এইসব লাইব্রেরির উপর নির্ভর করে। AppCompatActivity এবং Support Fragment উভয়ই এখন LifecycleOwner ইন্টারফেস প্রয়োগ করে।
নতুন ইন্টিগ্রেশনের সুবিধা নিতে এই রিলিজ সাপোর্ট লাইব্রেরি 26.1.0-এর উপর নির্ভর করে।
নতুন লাইব্রেরি: পেজিং
এই রিলিজে পেজিং নামে একটি নতুন লাইব্রেরিও অন্তর্ভুক্ত করা হয়েছে, যা প্রয়োজন হলে RecyclerView-তে বড় ডেটা সেট
সহজে চাঙ্ক হিসেবে লোড করতে দেয়। পেজিং alpha1 হিসেবে রিলিজ করা হয়েছে
এবং এটির নিজস্ব রিলিজ সাইকেল থাকবে।
API-তে পরিবর্তন
- নিম্নলিখিত ক্লাসগুলি বন্ধ করা হয়েছে এবং ভবিষ্যতে রিলিজের সময় সরিয়ে দেওয়া হবে:
ত্রুটি সমাধান
অ্যাপের ক্লাসপাথে অ্যানোটেশন থাকলে, তৈরি করা ক্লাস এখন
@Generated-এর সাথে অ্যানোটেট করা হয়। b/35754819MediatorLiveData-এর অবজারভার তুলনা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/64413274
SQLite
WITHকোয়েরি এখন [LiveData]-এর সাথে কাজ করে। [ref-LiveData] b/62510164১টির বেশি টেবিল লক্ষ্য করা হলে InvalidationTracker সঠিক তালিকা পাঠাতে পারত না, এই সমস্যার সমাধান করা হয়েছে। b/65099281
Windows-এ Room-এর আলাদা ফাইল জেনারেট করার সমস্যা সমাধান করা হয়েছে। b/64470691
রুট প্যাকেজে LifecycleObservers এখন কাজ করে। b/62310817
1.0.0 Alpha 9 - ১৬ আগস্ট, ২০১৭
সমস্যার সমাধান
- LiveData-তে একটি সমস্যার সমাধান করা হয়েছে, যেখানে প্রথম Observer-কে তার
onChangedপদ্ধতি থেকে সরিয়ে দেওয়ার সময় দ্বিতীয়টিকে উপেক্ষা করা হয়েছিল। b/64285805
1.0.0 Alpha 8 - ১ আগস্ট, ২০১৭
আচরণে পরিবর্তন
NOT NULLসীমাবদ্ধতা প্রিমিটিভ ধরনের কলাম বা NonNull দিয়ে অ্যানোটেট করা কলামের জন্য যোগ করা হয়েছে। এটি আপনার টেবিলের স্ট্রাকচার পরিবর্তন করে, তাই আপনি যদি আগে থেকেই আর্কিটেকচার কম্পোনেন্ট আলফা ৭ বা তার আগের ভার্সন ব্যবহার করেন, তাহলে ডেটা রাখতে চাইলে আপনাকে মাইগ্রেশন করতে হবে অথবা বিল্ডারেfallbackToDestructiveMigration()পদ্ধতি ব্যবহার করতে হবে। b/62007004
API-তে পরিবর্তন
- SupportSQLiteProgram এখন AutoCloseable এক্সটেন্ড করে। b/63131997
1.0.0 Alpha 7 - ২৬ জুলাই, ২০১৭
সমস্যার সমাধান
LifecycleRegistry
removeObserverপদ্ধতিতে গুরুত্বপূর্ণ বাগ ঠিক করা হয়েছে, যা LifecycleObserver আবার যোগ করার সময় সমস্যা সৃষ্টি করছিল।কাস্টম ডেটাবেসের জন্য InvalidationTracker সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/63162311
1.0.0 Alpha 6 - ২৫ জুলাই, ২০১৭
আচরণ সংক্রান্ত পরিবর্তন
LifecycleObserver কলের ক্রম পরিবর্তন করা হয়েছে। আগে, পর্যবেক্ষকদের সবসময় তাদের যোগ করার ক্রম অনুসারে কল করা হত: যদি
observer2-এর আগেobserver1যোগ করা হয়, তাহলে এটিobserver2-এর আগেON_CREATEএবং অন্যান্য সব ইভেন্ট পাবে। ধ্বংসাত্মক ইভেন্টের ক্ষেত্রে এটি আর প্রযোজ্য নয়, কারণ সেগুলির জন্য অবজারভারদের যোগ করার বিপরীত ক্রমে ডাকা হয়। তাই বর্তমান আচরণ হল:observer2-এর আগেobserver1যোগ করা হলে,ON_CREATEপ্রথমেobserver1-এ পাঠানো হয়, তারপরobserver2-এ পাঠানো হয় (ON_STARTওON_RESUME-এর ক্ষেত্রেও একই জিনিস হয়), কিন্তুON_PAUSEইভেন্ট প্রথমেobserver2-এ পাঠানো হয় এবং শুধুমাত্র তারপরobserver1-এ পাঠানো হয় (ON_STOPওON_DESTROY-এর ক্ষেত্রেও একই জিনিস হয়)।মাইগ্রেশন না থাকলে, রুম একটি ব্যতিক্রম থ্রো করে। আগে Room শুধু ডেটাবেস মুছে দিত, কিন্তু এখন এটি ক্র্যাশ করে। ডেভেলপাররা বিল্ডার API কল করে ক্লিয়ারিং বিহেভিয়ার চালু করতে পারেন। b/63872392
API-তে পরিবর্তন
মাইগ্রেশন না থাকলে ডেটাবেস খালি করার জন্য
RoomDatabase.Builder-এfallbackToDestructiveMigration()পদ্ধতি যোগ করা হয়েছে। b/63872392আর্কিটেকচার কম্পোনেন্ট এখন সাপোর্ট লাইব্রেরি ২৬.০.০-এর উপর নির্ভর করে
সমস্যার সমাধান
@Embedded-এ নেস্ট করা @Relation হ্যান্ডেল করার সমস্যা সমাধান করা হয়েছে। b/63736065
অটোমেটিক বৃদ্ধি পাওয়া প্রাথমিক কী সহ টেবিলের জন্য টেস্টিং মাইগ্রেশন ঠিক করা হয়েছে। b/63393618
এখন @Queries যা DELETE বা UPDATE কোয়েরি রান করে, তা সঠিকভাবে আর্গুমেন্ট পায়। b/63872538
এখন ViewModels রেখে দেওয়া হয়, যখন মালিকের ফ্র্যাগমেন্ট ব্যাকস্ট্যাকে থাকে এবং কনফিগারেশন দুবার পরিবর্তন হয়। b/38445801
1.0.0 Alpha 5 - ১৮ জুলাই, ২০১৭
API-তে পরিবর্তন
ডেটাবেস তৈরি বা খোলা হলে তা লক্ষ্য করার জন্য
RoomDatabase.Builder-এ নতুন কলব্যাক পদ্ধতি যোগ করা হয়েছে। b/62699324@Query এখন RxJava
MaybeবাSingleরিটার্ন করতে পারে। b/62231019
Room-এ RxJava সাপোর্ট যোগ করতে আপনাকে android.arch.persistence.room:rxjava2 আর্টিফ্যাক্টের উপর নির্ভর করতে হবে।
সমস্যার সমাধান
কোনও প্যারামিটার ছাড়াই
@Deleteটি কোয়েরি ঠিক করা হয়েছে। b/63608092গেটার ও সেটারের জন্য রুমের ধরন চেক করার সমস্যা সমাধান করা হয়েছে। b/63733651
1.0.0 Alpha 4 - ১১ জুলাই, ২০১৭
API-তে পরিবর্তন
RoomDatabase-এ নতুন কনভেনিয়েন্স মেথড (
runInTransaction()) যোগ করা হয়েছে।@Insert,@Deleteএবং@Updateপদ্ধতিতে এখন বিভিন্ন এন্টিটি টাইপ থেকে প্যারামিটার থাকতে পারে। b/62682405
ত্রুটি সমাধান
@Daoপদ্ধতিতেbyte[]হ্যান্ডলিং ঠিক করা হয়েছে। b/62460045রুমের মাইগ্রেশন চেক এখন কেস-ইনসেনসিটিভ তুলনা ব্যবহার করে। b/62875382
Lifecycles আর্টিফ্যাক্টের জন্য proguard কনফিগারেশন ঠিক করা হয়েছে। b/62113696
1.0.0 আলফা ৩ - ১৫ জুন, ২০১৭
API-তে পরিবর্তন
@OnLifecycleEventএখন শুধুমাত্র ১টি ইভেন্ট প্যারামিটার সাপোর্ট করে। Java 8-এর জন্য প্রস্তুতি হিসেবে এই পরিবর্তন করা হয়েছে যাতে ভবিষ্যতে আমরা ডিফল্ট পদ্ধতি সহ ইন্টারফেসে মাইগ্রেট করতে পারি। এই পরিবর্তনের সাথে সম্পর্কিত, শুধুমাত্র@OnLifecycleEvent(ON_ANY)অ্যানোটেটেড পদ্ধতিEventধরনের দ্বিতীয় প্যারামিটার গ্রহণ করতে পারে (প্রথম প্যারামিটার হলLifecycleOwner)। বিস্তারিত জানতে লাইফসাইকেল ডকুমেন্ট দেখুন।LifecycleActivityএবংLifecycleFragmentক্লাসগুলিandroid.arch.lifecycle:extensionsআর্টিফ্যাক্টে সরানো হয়েছে।MigrationTestHelper,
Context-এর পরিবর্তে Instrumentation ইনস্ট্যান্স রিসিভ করে যাতে টেস্ট অ্যাসেট থেকে স্কিমা পড়তে এবং অ্যাপ্লিকেশন প্রসঙ্গে ডেটাবেস তৈরি করতে পারে।@DAOপদ্ধতিতে@Insert,@Deleteএবং@Updateঅ্যানোটেশনে এখন প্যারামিটার টাইপ হিসেবেIterableথাকতে পারে। b/62259820
ত্রুটি সমাধান
লাইফসাইকেল ইভেন্ট সহ ওভাররাইড করা পদ্ধতি আর একাধিকবার কল করা হয় না।
একাধিক
INপ্যারামিটার এখন সঠিকভাবে ম্যানেজ করা হয়। b/62608681অ্যাবস্ট্রাক্ট DAO ক্লাসে এখন একটি কনস্ট্রাক্টর থাকতে পারে যা
@Databaseইনস্ট্যান্স গ্রহণ করে। b/38488747DAO-এ এখন টাইপ প্যারামিটার সহ সুপার ক্লাস/ইন্টারফেস থাকতে পারে। b/62103620
1.0.0 আলফা ২ - ২ জুন, ২০১৭
API-তে পরিবর্তন
InvalidationTracker কলব্যাক এখন পরিবর্তিত টেবিলের নামের তালিকা পায়। (b/38468740)
SupportSQLiteDatabase ক্লাসের API সারফেস কমানো হয়েছে। (b/38481640)
ত্রুটি সমাধান
- লাইফসাইকেলের জন্য Proguard ফাইল। (b/62113696)
- টাইপ কনভার্টারের সাথে ডেটা লস। (b/62100716)
@Insertকোয়েরি থেকেLong[]ফিরিয়ে আনার অনুমতি দিন।
1.0.0 Alpha 1 - ১৭ মে, ২০১৭
MinSDK: ১৪
সাধারণ পরামর্শ
লঞ্চ করার আগে আমরা অনেক পরীক্ষা-নিরীক্ষা করেছি, তবে আর্কিটেকচার কম্পোনেন্ট বর্তমানে আলফা ভার্সনে রয়েছে। আপনি যদি প্রোডাকশন অ্যাপ তৈরি করেন, তাহলে মনে রাখবেন যে ১.০ রিলিজের আগে API পরিবর্তন হবে এবং এটি সম্পূর্ণভাবে শক্তিশালী নাও হতে পারে। আপনি যে লাইব্রেরি ব্যবহার করেন সেখানে সমস্যা ডিবাগ করতে স্বাচ্ছন্দ্য বোধ না করলে, আমরা প্রথমে সাইড প্রোজেক্টে আর্কিটেকচার কম্পোনেন্ট ব্যবহার করে দেখার সাজেশন দিই।
আমরা সবাইকে আজই মাইগ্রেট করার সাজেশন দিচ্ছি না। আর্কিটেকচার কম্পোনেন্টের ১.০ রিলিজের জন্য আমাদের কাছে একটি মাইগ্রেশন গাইড রেডি থাকবে।
পরিচিত সীমাবদ্ধতা ও সমস্যা
- সহায়তা লাইব্রেরিতে লাইফসাইকেল
FragmentএবংActivityCompatএখনওLifecycleOwnerইন্টারফেস প্রয়োগ করে না। আর্কিটেকচার কম্পোনেন্ট 1.0.0 ভার্সনে পৌঁছালে তারা তা করবে।