কোনও পরিষেবাতে প্রসঙ্গ পান


280

সেখানে একটি পেতে কোনো নির্ভরযোগ্য উপায় আছে কি ContextA থেকে Service?

আমি এর জন্য একটি সম্প্রচার রিসিভার নিবন্ধিত করতে চাই ACTION_PHONE_STATE_CHANGEDতবে এই তথ্যটি সর্বদা পেতে আমার অ্যাপের প্রয়োজন হয় না, তাই আমি এটিতে রাখি না Manifest

যাইহোক, আমার যখন এই তথ্যের প্রয়োজন হয় তখন আমি জিসি দ্বারা ব্রডকাস্ট রিসিভারকে হত্যা করতে পারি না তাই আমি একটিতে সম্প্রচারের রিসিভারটি নিবন্ধন করছি Service

অতএব, আমি Contextকল করতে একটি প্রয়োজন registerReceiver()। যখন আমার আর প্রয়োজন হয় না ACTION_PHONE_STATE_CHANGEDআমি এটি নিবন্ধভুক্ত করি।

কোন টিপস?

উত্তর:


780

3
আমার এই সমস্যাটি ছিল, তবে এটি প্রমাণিত হয়েছিল যে এটিই শ্রমিক থ্রেডের কোনও প্রসঙ্গ নেই। থ্রেডটি নির্মাণের সময় আমি এটি আমার প্রসঙ্গে পাস করার সমাধান করেছি।
ctrl-alt-delor

17
দ্রষ্টব্য: পরিষেবাগুলিতে অন
ক্লাস


4
প্রাপ্ত জবাব এবং প্রাপ্তিগুলির আকার বিবেচনা করে, আমি এসও-তে অন্য কোনও উত্তর এটিকে মারধর করার কথা ভাবি না :)
অমৃত-পানী

2
এই 4 টি শব্দ কেবল আমার সমস্যার সমাধান করেছে যা আমি 3 ঘন্টা ধরে সমাধান করার চেষ্টা করছি।
নিরুপ আইয়ার

64

Serviceপ্রসারিত ContextWrapperযা প্রসারিত Context। অত: পর Serviceএকটি হল Context'this'পরিষেবাটিতে কীওয়ার্ডটি ব্যবহার করুন ।



8

যেহেতু Serviceএকটি Context, তাই ভেরিয়েবল প্রসঙ্গটি হতে হবে this:

DataBaseManager dbm = Utils.getDataManager(this);   

5

হিসাবে পরিষেবা ইতিমধ্যে একটি হল কনটেক্সট নিজেই

আপনি এটি মাধ্যমে পেতে পারেন:

Context mContext = this;

অথবা

Context mContext = [class name].this;  //[] only specify the class name
// mContext = JobServiceSchedule.this; 

1

কেউ যদি পাচ্ছে NullPointerExceptionতবে আপনার প্রসঙ্গটি ভিতরে পাওয়া দরকারonCreate().

Serviceএটি একটি Context, তাই এটি করুন:

@Override
public void onCreate() {
    super.onCreate();
    context = this;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.