আর্কিটেকচার কম্পোনেন্ট রিলিজ নোট আর্কাইভ

১৫ জানুয়ারি, ২০১৯

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/120104424
  • AppBarConfiguration এখন আপনাকে একটি ফলব্যাক OnNavigateUpListener ইনস্ট্যান্স সেট করার অনুমতি দেয় যা navController.navigateUp(), false রিটার্ন করলে কল করা হবে। b/79993862 b/120690961

ব্রেকিং পরিবর্তন

  • argType="reference"-এর সাথে <argument> ব্যবহার করার সময়, নেভিগেশন আর রেফারেন্স পার্স করে না, পরিবর্তে র রিসোর্স আইডি প্রদান করে। b/111736515
  • onNavDestinationSelected() এখন ডিফল্ট হিসেবে আপনার নেভিগেশন গ্রাফের শুরুর গন্তব্যে ফিরে যায়, যা 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/118670572
  • OnDestinationChangedListener এখন আর্গুমেন্টের Bundle-ও পাস করে aosp/৮৩৭১৪২
  • app:clearTask ও app:launchDocument অ্যাট্রিবিউট এবং সেগুলির সাথে সম্পর্কিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। আপনার ব্যাক স্ট্যাক থেকে সব গন্তব্য সরাতে আপনার গ্রাফের রুটের সাথে app:popUpTo ব্যবহার করুন। b/119628354
  • ActivityNavigator.Extras এখন Builder প্যাটার্ন ব্যবহার করে এবং যেকোনও Intent.FLAG_ACTIVITY_ ফ্ল্যাগ সেট করার ক্ষমতা যোগ করে aosp/828140
  • NavController.onHandleDeepLink-এর নাম পরিবর্তন করে handleDeepLink করা হয়েছে aosp/836063
  • অনেক ক্লাস ও পদ্ধতি সাবক্লাসিংয়ের জন্য নয়, যেমন NavOptions, NavInflater, NavDeepLinkBuilder এবং AppBarConfiguration, final করা হয়েছে aosp/৮৩৫৬৮১
  • NavHostFragment.setGraph() অবচিত পদ্ধতি সরিয়ে দেওয়া হয়েছে aosp/835684
  • NavigationUI.navigateUp(DrawerLayout, NavController) অবচিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। aosp/835684
  • ফ্র্যাগমেন্ট তৈরি করার সুবিধা FragmentNavigator-এ সরানো হয়েছে, যার ফলে FragmentFactory-এ ফ্র্যাগমেন্ট তৈরি করার সুবিধা ডেলিগেট করা আরও সহজ হয়েছে। b/119054429
  • NavGraphNavigator-এর কনস্ট্রাক্টর আর Context নেয় না aosp/৮৩৫৩৪০
  • NavigatorProvider এখন ইন্টারফেসের পরিবর্তে একটি ক্লাস। getNavigatorProvider()-এর মাধ্যমে ফেরত আসা NavigatorProvider এর কার্যকারিতা পরিবর্তন করেনি। aosp/830660
  • NavDestination.navigate() সরানো হয়েছে৷ পরিবর্তে Navigator-এ navigate()-কে কল করুন। aosp/830663
  • Navigator-এর উল্লেখযোগ্য রিফ্যাক্টরিং, 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() CANCELLED State সহ WorkInfo ফিরিয়ে দেবে।
  • ListenableWorker-এ null Result-কে ব্যর্থতা হিসেবে বিবেচনা করুন। 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-এ FTS tokenizer এখন 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 সারফেস ও মেথড কাউন্ট কমানোর জন্য আমরা এটি করেছি।
  • প্রতিটি প্রসেসে একাধিকবার initialize WorkManager করার চেষ্টা করলে এখন IllegalStateException হবে। এটি একটি ব্রেকিং পরিবর্তন।

ত্রুটি সমাধান

  • work-runtime-ktx আর্টিফ্যাক্টে থাকা WorkRequest.Builder এখন ListenableWorker ব্যবহার করে। Fixes b/117666259
  • PeriodicWork-এর জন্য পরবর্তী রান টাইম ভবিষ্যতের কোনও সময়ে হতে হবে। 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 গ্রহণ করে না।
  • প্রতিটি প্রসেসে একাধিকবার initialize WorkManager করার চেষ্টা করলে এখন 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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: RoomDatabase.Builder-এ নতুন API যা ডাউনগ্রেড হলে অটোমেটিক ডেটাবেস আবার তৈরি করে। b/110416954
  • ignoredColumns: @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 রিলিজ করা হয়েছে।

নতুন ফিচার

API-তে পরিবর্তন

  • ব্রেকিং পরিবর্তন: Navigator navigate() মেথড এখন Navigator.Extras প্যারামিটার নেয়।
  • NavController-এর getGraph() পদ্ধতি এখন NonNull b/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/112272753
  • Data.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 RescheduleReceiver only when there are WorkRequests that need it. b/111765853

২৪ জুলাই, ২০১৮

WorkManager

WorkManager 1.0.0-alpha05 গুরুত্বপূর্ণ ত্রুটি সমাধান ও লগিং সংক্রান্ত পরিবর্তন সহ রিলিজ করা হয়েছে।

API-তে পরিবর্তন

  • WorkManager.getInstance() এখন @Nullable-এর পরিবর্তে @NonNull-এর সাথে অ্যানোটেট করা হয়েছে। পরিবর্তে, ম্যানুয়াল ইনিশিয়ালাইজেশনের ক্ষেত্রে সিঙ্গলটন সঠিকভাবে ইনিশিয়ালাইজ না হলে, পদ্ধতিটি একটি IllegalStateException থ্রো করবে। এটি একটি ব্রেকিং API পরিবর্তন।
  • নতুন API, Configuration.Builder.setMinimumLoggingLevel(int) যোগ করা হয়েছে, যা WorkManager-এর ভার্বোসিটি নিয়ন্ত্রণ করতে পারে। ডিফল্ট হিসেবে, WorkManager Log.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-এর পরিবর্তে setDemoControllerIndex b/79995048 হয়ে যাবে
    • যেমন, action_show_settings হয়ে যাবে actionShowSettings b/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/79632247

  • API 28-এ JobParameters#getNetwork()-এর জন্য সহায়তা যোগ করুন। এটি Worker.getNetwork()-এর মাধ্যমে প্রকাশ করা হয়।

  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) যোগ করা হয়েছে যাতে আপনি JobScheduler বা AlarmManager-এ কতগুলি কাজ পাঠানো যেতে পারে তা এনফোর্স করতে পারেন। এটি WorkManager-কে আপনার উপলভ্য সব JobScheduler স্লট নেওয়া থেকে আটকায়।

  • Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) যোগ করা হয়েছে যা WorkManager-এর ব্যবহারের জন্য নিরাপদ JobScheduler জব আইডির রেঞ্জ নির্ধারণ করতে সাহায্য করে। b/79996760

  • Worker.getRunAttemptCount() কোনও নির্দিষ্ট Worker-এর জন্য বর্তমান রান কাউন্ট দেখায়। b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) আপনাকে একটি অনন্য PeriodicWorkRequest কিউতে যোগ করার অনুমতি দেয়। b/79600647

  • WorkManager.cancelAllWork() সব Worker বাতিল করে দেয়। WorkManager-এর উপর নির্ভর করে এমন লাইব্রেরি, ইন্টার্নাল স্টেট আরও পরিষ্কার করার জন্য WorkManager.getLastCancelAllTimeMillis() ব্যবহার করে এই পদ্ধতি শেষবার কখন কল করা হয়েছিল তা কোয়েরি করতে পারে।

  • ইন্টার্নাল ডেটাবেস থেকে সম্পূর্ণ হওয়া কাজ সরিয়ে দিতে WorkManager.pruneWork() যোগ করা হয়েছে। b/79950952, b/109710758

আচরণে পরিবর্তন

  • সব WorkRequest-এর জন্য একটি ইমপ্লিসিট ট্যাগ যোগ করা হয়েছে, যা হল Worker-এর জন্য সম্পূর্ণ কোয়ালিফায়েড ক্লাস নেম। This allows the ability to remove WorkRequests without tags or when the id is 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/79656847

  • NavDeepLinkBuilder ব্যবহার করার সময় StackOverflowError সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/109653065

  • নেস্টেড গ্রাফে ফিরে যাওয়ার সময় IllegalArgumentException সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/80453447

  • launchSingleTop ব্যবহার করার সময় ওভারল্যাপ করা ফ্র্যাগমেন্ট সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79407969

  • নেভিগেশন এখন নেস্টেড গ্রাফের জন্য সঠিক সিন্থেটিক ব্যাক স্ট্যাক তৈরি করে। b/79734195

  • MenuItem হিসেবে নেস্টেড গ্রাফ ব্যবহার করার সময় NavigationUI এখন সঠিক আইটেম হাইলাইট করবে। b/109675998

API-তে পরিবর্তন

  • NavOptions-এ অ্যাকশনের জন্য clearTask অ্যাট্রিবিউট এবং সংশ্লিষ্ট API বন্ধ করে দেওয়া হয়েছে। b/80338878

  • NavOptions-এ অ্যাকশনের জন্য launchDocument অ্যাট্রিবিউট এবং সংশ্লিষ্ট API বন্ধ করা হয়েছে। b/109806636

২৪ মে, ২০১৮

WorkManager 1.0.0-alpha02 রিলিজ করা হয়েছে।

WorkManager

ত্রুটি সমাধান

  • State.isFinished()-এ NullPointerException সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/79550068

  • Worker-এর শিডিউল Application.onCreate()-এ পরিবর্তন হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। b/79660657

  • OS-এর অনুমোদিত সীমার চেয়ে বেশি কাজ শিডিউল করার সমস্যা সমাধান করা হয়েছে। b/79497378

  • Worker-এর সাথে যুক্ত ওয়েক লক ক্লিন-আপ ব্যাকগ্রাউন্ড থ্রেডে সরানো হয়েছে।

  • AlarmManager প্রয়োগ করার ফলে এখন সমস্ত বাকি থাকা কাজ সম্পূর্ণ হলে সঠিকভাবে ক্লিন আপ করে।

  • ইংরেজি ছাড়া অন্য ভাষার ক্ষেত্রে ক্লিন-আপ SQL কোয়েরি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/80065360

  • Data-এ float-এর জন্য সহায়তা যোগ করা হয়েছে। b/79443878

  • Data.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/76031240

  • RoomDatabase.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/63807999

  • SupportSQLiteQuery-এ এখন একটি getArgCount() পদ্ধতি আছে যা কোয়েরি প্যারামিটারের সংখ্যা রিটার্ন করে। b/67038952

ত্রুটি সমাধান

  • @RawQuery এখন পেজিং কোয়েরির জন্য সঠিকভাবে কাজ করে। b/৭২৬০০৪২৫

  • ২ বা তার বেশি Dao ইন্টারফেস একই প্যাকেজে ইনার ক্লাস হিসেবে থাকলে এবং একই নাম হলে, নামের মধ্যে দ্বন্দ্ব এড়াতে, Room এখন সঠিকভাবে জেনারেট করা Dao ক্লাসের নাম দেয়। b/73536380

  • Pojo-এ জেনেরিক ফিল্ডের ধরন এক্সটেন্ডিং ক্লাসের মেম্বার হিসেবে সঠিকভাবে পার্স করা হয়েছে। b/73534868

  • Dao ইন্টারফেসে কোয়েরি প্যারামিটার যা ডিপেন্ডেন্সি আর্টিফ্যাক্ট থেকে ইনহেরিট করা হয়েছে, সেগুলি এখন সঠিকভাবে পার্স করা হয়েছে। b/68118746

  • @Relation-এর জন্য জেনারেট করা কোয়েরি এখন ফিল্ডের নাম সঠিকভাবে এড়িয়ে যায়। b/70925483

২৭ ফেব্রুয়ারি, ২০১৮

সাপোর্ট লাইব্রেরি রিলিজ 27.1.0-এর সাথে পেজিং 1.0.0-alpha6 রিলিজ করা হয়েছে। ListAdapter এবং কিছু সম্পর্কিত ক্লাস পেজিং লাইব্রেরি থেকে সরাসরি Recyclerview-এ সরানো হয়েছে, পাশাপাশি নির্দিষ্ট ক্লাসের ফাংশন আরও স্পষ্ট করার জন্য কিছু নাম পরিবর্তন করা হয়েছে। পেজিংয়ের এই আলফা রিলিজটি সম্ভবত শেষবার উল্লেখযোগ্য API ব্রেকিং পরিবর্তন করেছে।

API-তে পরিবর্তন

  • ক্লাস recyclerview-v7-এ সরানো হয়েছে:
    • ListAdapter
  • ক্লাসের নাম পরিবর্তন করা হয়েছে এবং recyclerview-v7-এ সরানো হয়েছে:
    • ListAdapterHelper -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> 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/67757002

  • Guava সাপোর্ট: Room এখন DAO কোয়েরিতে Guava Optional<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/72366965

  • Room এখন অ্যানোটেশন প্রসেসিংয়ের সময় ক্লাস স্ট্রাকচার পড়তে 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.0
  • android.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 @Dao methods to receive the SQL as a query parameter b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: 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-এর মতো একই রিলিজ।

ত্রুটি সমাধান

রিলিজ ক্যান্ডিডেট - ১৮ অক্টোবর, ২০১৭

সব প্রধান আর্টিফ্যাক্ট (পেজিং ছাড়া) এখন 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 হিসেবে ব্যবহার করার জন্য তৈরি করা হয়নি)।
  • লাইফসাইকেল:

    • API < 24-এ অ্যাক্টিভিটি আংশিকভাবে কভার করা থাকলে LiveData সঠিকভাবে কাজ করে। b/65665621

    • প্যারেন্ট ক্লাসে OnLifecycleEvent মেথড এখন সঠিকভাবে কল করা হয় অথবা এটি সম্ভব না হলে কম্পাইলেশনের সময় একটি সতর্কতা প্রিন্ট করা হয়। b/63474615

    • Lifecycle এখন 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 ডেটাবেস সাপোর্ট:

  • পেজিং:

    • আরও উদাহরণ ও থ্রেড অ্যানোটেশন সহ পেজিং ডকুমেন্টেশন উন্নত করা হয়েছে।

ত্রুটি সমাধান

  • রুম:
    • @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/35754819

  • MediatorLiveData-এর অবজারভার তুলনা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। 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-তে পরিবর্তন

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/38488747

  • DAO-এ এখন টাইপ প্যারামিটার সহ সুপার ক্লাস/ইন্টারফেস থাকতে পারে। b/62103620

1.0.0 আলফা ২ - ২ জুন, ২০১৭

API-তে পরিবর্তন

ত্রুটি সমাধান

  • লাইফসাইকেলের জন্য Proguard ফাইল। (b/62113696)
  • টাইপ কনভার্টারের সাথে ডেটা লস। (b/62100716)
  • @Insert কোয়েরি থেকে Long[] ফিরিয়ে আনার অনুমতি দিন।

1.0.0 Alpha 1 - ১৭ মে, ২০১৭

MinSDK: ১৪

সাধারণ পরামর্শ

  • লঞ্চ করার আগে আমরা অনেক পরীক্ষা-নিরীক্ষা করেছি, তবে আর্কিটেকচার কম্পোনেন্ট বর্তমানে আলফা ভার্সনে রয়েছে। আপনি যদি প্রোডাকশন অ্যাপ তৈরি করেন, তাহলে মনে রাখবেন যে ১.০ রিলিজের আগে API পরিবর্তন হবে এবং এটি সম্পূর্ণভাবে শক্তিশালী নাও হতে পারে। আপনি যে লাইব্রেরি ব্যবহার করেন সেখানে সমস্যা ডিবাগ করতে স্বাচ্ছন্দ্য বোধ না করলে, আমরা প্রথমে সাইড প্রোজেক্টে আর্কিটেকচার কম্পোনেন্ট ব্যবহার করে দেখার সাজেশন দিই।

  • আমরা সবাইকে আজই মাইগ্রেট করার সাজেশন দিচ্ছি না। আর্কিটেকচার কম্পোনেন্টের ১.০ রিলিজের জন্য আমাদের কাছে একটি মাইগ্রেশন গাইড রেডি থাকবে।

পরিচিত সীমাবদ্ধতা ও সমস্যা