অ্যান্ড্রয়েডের ধ্রুবকগুলির সংজ্ঞা দেওয়ার সর্বোত্তম উপায় কোনটি স্ট্যাটিক ক্লাস, ইন্টারফেস বা এক্সএমএল সংস্থান?


100

আমি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিকাশ করছি যা সার্ভার থেকে ডেটা পেতে ওয়েব পরিষেবা ব্যবহার করে, এর জন্য আমার কাছে বিকাশ সিস্টেম, পরীক্ষার সার্ভার এবং লাইভ সার্ভার নির্দেশ করতে তিনটি ভিন্ন ভিন্ন ইউআরএল রয়েছে। আমি যখনই পরীক্ষার / লাইভের জন্য আবেদন দিতে চাই তখন ইউআরএল পরিবর্তন করা শক্ত। সুতরাং আমি এটিকে কনফিগারযোগ্য হিসাবে তৈরি করার পরিকল্পনা করেছি, যাতে অ্যাপ্লিকেশনটি আমার বিল্ড টাইপ কনফিগারেশনের ধ্রুবকটির ভিত্তিতে উপযুক্ত URL পেতে পারে। সুতরাং,

  • এই ধ্রুবকগুলি, জাভা স্ট্যাটিক ক্লাস বা জাভা পাবলিক ইন্টারফেস বা এক্সএমএল রিসোর্স ফাইল রাখার সবচেয়ে ভাল উপায়। কখন? কেন?
  • যা আরও ভাল পারফরম্যান্স দেয় ? , কখন? কেন?

উদাঃ xML রিসোর্স

<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
    <item >http://development.com/xxxx</item>
    <item >http://test.com/xxx</item>
    <item >http://example.com/xxx</item>
</string-array>

জাভা স্থির ধ্রুবক

public class Config {
    public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
    public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}

4
আমি এখানে অত্যন্ত পারফরম্যান্স নিয়ে সন্দেহ করব ...
অ্যালেক্স লকউড

ওয়েব সার্ভিস কলগুলি একক শ্রেণিতে বা একাধিক শ্রেণিতে রয়েছে কিনা?
ভেনকি

@ ভেনকি, একাধিক ক্লাসে, প্রতিটি আলাদা উদ্দেশ্যে অর্থাত্ ব্যবহারকারী ব্যবহারকারীর প্রমাণীকরণের জন্য অন্য একটি ডেটা ডাউনলোড করার জন্য এবং তাই ..
জয়াবল

উত্তর:


93

আপনার এক্সএমএল লেআউটে প্রকল্পের সংস্থানগুলি উল্লেখ করতে পারার মধ্যে দুটি মধ্যে একটি বড় পার্থক্য রয়েছে। এগুলি অ্যাপ্লিকেশন প্রসঙ্গে উপলব্ধ এবং তাই বিশ্বব্যাপী অ্যাপ্লিকেশন জুড়ে অ্যাক্সেসযোগ্য। প্রকল্পের সংস্থানগুলি ব্যবহারের সবচেয়ে বড় সুবিধা হ'ল অ্যাক্সেসের স্বাচ্ছন্দ্য এবং এগুলি আপনাকে আপনার প্রকল্পটিকে উল্লেখযোগ্যভাবে সংগঠিত করার অনুমতি দেয়।

static finalধ্রুবকগুলি জাভা বাইটকোডে সংকলিত হয়; প্রকল্পের সংস্থানগুলি এপিপির মধ্যে বাইনারি বিন্যাসে সংকলিত হয়। উভয়ই অ্যাক্সেস করা অত্যন্ত দক্ষ ... যদি উভয়ের মধ্যে পার্থক্য থাকে তবে এটি বেশিরভাগ ক্ষেত্রেই তুচ্ছ।

আপনার প্রকল্পে কীভাবে আপনার সংস্থানগুলি / ধ্রুবক ব্যবহার করা উচিত সে সম্পর্কে কোনও সেট নিয়ম নেই। এটি বলেছিল, আমি ব্যক্তিগতভাবে আমার এক্সএমএল বা জাভা কোডে প্রয়োজনীয় মূল্যগুলির জন্য সংস্থানগুলি ব্যবহার করি । অন্যদিকে, আমি সাধারণত static finalমানগুলির জন্য ধ্রুবক ব্যবহার করি যা কেবলমাত্র আমার জাভা কোড দ্বারা ব্যবহৃত হবে এবং আমার প্রয়োগের জন্য সুনির্দিষ্ট।

এছাড়াও নোট করুন যে ডিভাইসের বর্তমান কনফিগারেশন (যেমন পর্দার আকার, লোকেল, ইত্যাদি) এর উপর নির্ভর করে রানটাইম সময়ে এক্সএমএল সংস্থানগুলি লোড করা সম্ভব। সুতরাং আপনার এক্সএমএল বা সরাসরি আপনার .javaফাইলগুলিতে ধ্রুবক ঘোষণা করা উচিত কিনা তা সিদ্ধান্ত নেওয়ার সময় আপনার এটি বিবেচনায় নেওয়া উচিত ।


বিভিন্ন স্বাদ / বিল্ড ধরণের কনফিগার করতে রিসোর্সগুলি অনেক সহজ
আশাকরি

@ অ্যালেক্স আমার একটি সন্দেহ আছে দয়া করে আপনি এটি পরিষ্কার করতে পারেন: স্ট্যাটিক ভেরিয়েবলগুলি কম ব্যবহার করার পরামর্শ দেওয়া হয় তাই যদি আমরা স্ট্যাটিক ভেরিয়েবলের সাথে ধ্রুবক ফাইল তৈরি করি তবে এটি কি আমাদের অ্যাপ্লিকেশনটির কার্যকারিতা প্রভাব ফেলবে না?
পল্লবী

4
বিবেচনা করার জন্য একটি অতিরিক্ত বিষয় হ'ল, যদি একাধিক ক্লাস জুড়ে একটি চূড়ান্ত ধ্রুবক ব্যবহার করা হয়, তবে ধ্রুবকটি পরিবর্তিত হলে সেই সমস্ত অবজেক্টের পুনরায় সংযুক্ত করা দরকার। ধ্রুবকটি যদি কোনও উত্স হিসাবে সংরক্ষণ করা হয় তবে এটাই হবে না। এটি একটি বৃহত প্রকল্পের জন্য একটি গুরুত্বপূর্ণ বিবেচনা হতে পারে যা সংকলন করতে দীর্ঘ সময় নেয়।
orodbhen

24

যে লোকেরা দেখতে চায় যে আমরা কীভাবে আমাদের ধ্রুবকগুলি সংজ্ঞায়িত করতে ক্লাস ব্যবহার করতে পারি এবং আমাদের যেখানে প্রয়োজন সেখানে কল করতে পারি।

কনস্ট্যান্ট.জভা

    package org.nrum.nrum;

/**
 * Created by rajdhami on 5/23/2017.
 */
public class Constant {
    public static final String SERVER = "http://192.168.0.100/bs.dev/nrum";
//    public static final String SERVER = "http://192.168.100.2/bs.dev/nrum";
    public static final String API_END = SERVER + "/dataProvider";
    public static final String NEWS_API = API_END + "/newsApi";
    public static final String BANNER_API = API_END + "/bannerApi/lists";
    public static final String NOTICE_API = API_END + "/noticeApi/lists";
    public static final String UPLOAD_PATH = SERVER + "/uploads";
    public static final String UPLOAD_PATH_BANNER = UPLOAD_PATH + "/company_1/banner";
    public static final String UPLOAD_PATH_NEWS = UPLOAD_PATH + "/company_1/news";
    public static final int BANNER_TRANSITION_DURATION = 5000;
    public static final int NOTICE_BUTTON_BLINK_DURATION = 5000;
    public static final int BANNER_FETCH_LIMIT = 3;
}

এখন আমরা উপরের ধ্রুবকগুলি নিম্নলিখিত উপায়ে ব্যবহার করতে পারি।

Constant.NOTICE_BUTTON_BLINK_DURATION

4
সেরা উপায়ের জন্য প্রশ্ন করা হয়েছিল !!
shadygoneinsane

@ উমার আমি ভিন্ন ভিন্ন ভূমিকা আলাদা আলাদা ইউআরএল ব্যবহার করতে চাই, দয়া করে সহায়তা করুন, এর আগে আমি উরস এর মতো ব্যবহার করছিলাম
কুলদীপ সিং

11

সাধারণ ক্ষেত্রে:

  • এক্সএমএল মানগুলির জাভা ফাইলে কনস্ট্যান্টগুলির চেয়ে লেআউট ফাইল এবং ম্যানিফেস্ট ফাইলের অ্যাক্সেসবিলিটির সুবিধা রয়েছে
  • এক্সএমএল মানগুলি জাভা ফাইলে কনস্ট্যান্টগুলির চেয়ে বহু ভাষা সমর্থন করার সুবিধা করে

4
ধন্যবাদ ধীরেশ, হ্যাঁ, আমি বুঝতে পেরেছি যে এক্সএলএমএল কনফিগারেশন রাখা খুব দরকারী যা উভয় বিন্যাস, ম্যানিফেস্ট এবং জাভা দ্বারা
প্রবেশযোগ্য

2

আপনার অ্যাপ্লিকেশন কোড থেকে ইউআই স্ট্রিংগুলি বের করা এবং এগুলি একটি বাহ্যিক ফাইলে রাখা সর্বদা ভাল অনুশীলন। অ্যান্ড্রয়েড প্রতিটি অ্যান্ড্রয়েড প্রকল্পের একটি সংস্থান ডিরেক্টরি সহ এটি সহজ করে তোলে।

http://developer.android.com/training/basics/supporting-devices/languages.html


প্রশ্নটি কেবল জাভা কোড দ্বারা অভ্যন্তরীণভাবে ব্যবহার করার ধ্রুবকগুলির বিষয়ে। এটি একটি ভিন্ন দৃশ্য। ব্যবহারকারীর ইন্টারফেসের সাথে সম্পর্কিত পাঠ্য ট্যাগগুলির নির্দিষ্ট ক্ষেত্রে যেমন আপনি উল্লেখ করেছেন যে সন্দেহ নেই যে সঠিক জায়গাটি অ্যান্ড্রয়েড প্রকল্পের এক্সএমএল সংস্থান।
সিজারগাস্টিকন

2

আমি মনে করি উভয় দিকই ভাল বলে মনে হচ্ছে তবে জিনিসটি এটি আপনার প্রয়োজনীয়তার উপর নির্ভর করে।

যদি আপনার এক্সএমএলে আপনার মান (ওয়েব সার্ভিস লিঙ্ক) থাকে এবং ধরুন আপনার মানগুলিতে (ওয়েব পরিষেবা লিঙ্ক) কোনও পরিবর্তন হয়েছে তবে আপনি কেবল এক্সএমএল ফাইলে সহজেই পরিবর্তন করতে পারবেন।

তবে আপনি যদি ক্লাসের অভ্যন্তরীণ স্থিতিশীল ভেরিয়েবল হিসাবে ব্যবহার করেন তবে আপনাকে সমস্ত শ্রেণীর ফাইলগুলিতে পরিবর্তন করতে হবে।

সুতরাং আমার পরামর্শটি হ'ল উত্স ফাইল থেকে পৃথক ধ্রুবকগুলি এবং উত্সে রাখা এবং এটি অ্যাক্সেস করুন ..


4
"আপনি কেবল এক্সএমএল ফাইলে সহজেই পরিবর্তন করতে পারবেন" এটি জাভা ফাইলে পরিবর্তনের মতোই সহজ এবং উভয় ক্ষেত্রেই আপনাকে প্রকল্পটি পুনর্নির্মাণ করতে হবে, তাই আমি মনে করি এটি কোনও পার্থক্য নয়, একটি সুবিধা বাদ দিন।
ফ্রান মারজোয়া

0

আমি আনন্দিত যে কেউ এটি জিজ্ঞাসা করেছে ... প্লাস ওয়ান!

প্রজেক্ট রিসোর্সের কনটেক্সটে অ্যাক্সেস প্রয়োজন, যা স্থির পদ্ধতিতে উপলভ্য নয় (যদি না আপনি এটি এখান দিয়ে যান) তবে এটি সর্বদা ক্রিয়াকলাপে উপলব্ধ resources সংস্থানগুলি এবং বিন্যাসগুলির মধ্যে একটি পছন্দনীয় সংযোগ রয়েছে বলে মনে হয়। স্থির পদ্ধতিতে প্রক্রিয়া করা হতে পারে এমন অ্যাপ্লিকেশন ভেরিয়েবল এবং ধ্রুবকগুলির জন্য আমি একটি বিমূর্ত শ্রেণি তৈরি করি এবং অন্যান্য সমস্ত প্রকল্প শ্রেণির ফাইলগুলিতে একটি স্ট্যাটিক আমদানি (এই ধ্রুবক শ্রেণীর) করি।

পিভিএস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.