মূল ক্রিয়াকলাপ ছাড়াই অ্যান্ড্রয়েড অ্যাপ্লিকেশন চালু করুন এবং অ্যাপ্লিকেশন চালু করার সময়ে পরিষেবা শুরু করুন


91

আমার অ্যাপ্লিকেশনটিতে আমার নিম্নোক্ত দৃশ্য আছে। আমার আবেদনে কোনও ইউআই নেই; পরিবর্তে একটি পরিষেবা রয়েছে যা বুট আপ শুরু হয় এবং অবিচ্ছিন্নভাবে চলবে।

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

পরিষেবাটি আরম্ভ করার জন্য আমি একটি স্বচ্ছ ক্রিয়াকলাপ তৈরি করতে চাই না।


উত্তর:


125

আপনি বলেছিলেন যে আপনি একটি স্বচ্ছ ক্রিয়াকলাপ ব্যবহার করতে চান না, তবে এটি এটি করার সর্বোত্তম উপায় বলে মনে হচ্ছে:

  1. আপনার ম্যানিফেস্টে, কার্যকলাপ থিমটি এতে সেট করুন Theme.Translucent.NoTitleBar
  2. আপনার ক্রিয়াকলাপের জন্য কোনও বিন্যাস নিয়ে বিরক্ত করবেন না এবং কল করবেন না setContentView()
  3. আপনার ক্রিয়াকলাপে onCreate(), আপনার পরিষেবাটি দিয়ে শুরু করুন startService()
  4. finish()একবার আপনি পরিষেবা শুরু করার সাথে ক্রিয়াকলাপ থেকে প্রস্থান করুন ।

অন্য কথায়, আপনার ক্রিয়াকলাপটি দৃশ্যমান হবে না; এটি কেবল আপনার পরিষেবাটি চলছে এবং তারপরে প্রস্থান হতে পারে তা নিশ্চিত করতে পারে যা আপনার যা চান তা শোনাচ্ছে।

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


4
এটি আমার অ্যাপ্লিকেশন চালু করার পরে আমাকে ফাঁকা স্ক্রিন দেয় wh যা ঘটনাটি হ'ল না ...
মেহের

4
@ মেমার আমি কেবল এটি পরীক্ষা করেছি এবং এটি আমার জন্য নিখুঁতভাবে কাজ করেছে - আমার পরিষেবা শুরু হয়েছিল এবং আমি কোনও তাত্ক্ষণিক জন্য এমনকি কোনও কার্যকলাপও দেখতে পাই নি। দয়া করে আপনার ক্রিয়াকলাপের অনক্রিট () এর লিখিত সামগ্রী পোস্ট করুন এবং যা ভুল তা আমাদের কাজ করতে সক্ষম হওয়া উচিত।
দর্শনা রিভকা হুইটল

যখন আমি প্রথমবার আমার অ্যাপ্লিকেশন ইনস্টল করেছি তখন আমি দেখতে পেলাম যে ক্রিয়াকলাপটি শুরু হয়েছিল এবং একটি সেকেন্ডে অদৃশ্য হয়ে যায়।
মেহের

পাবলিক ক্লাস টেস্টঅ্যাক্টিভিটি ক্রিয়াকলাপ বাড়ায় {/ ** কল করা হয় যখন কার্যকলাপটি প্রথম তৈরি করা হয়। * / @ ওভাররাইড পাবলিক অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); লগ.আই ("ক্রিয়াকলাপ", "পরিষেবা শুরু করা"); স্টার্ট সার্ভিস (নতুন ইনটেন্ট (টেস্টএকটিভিটি.থাইজ, মাই সার্ভিস.ক্লাস)); সমাপ্তি (); }}
মেহের

4
আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন, তবে এটি আর কার্যকর হবে বলে মনে হয় না। থিম.টান্সলুসেন্ট.নোটিটলবার বা থিম.ট্রান্সলুসেন্ট.নোটাইটেলবার.ফুলস্ক্রিনে মূল ক্রিয়াকলাপের থিমটি পরিবর্তন করা একটি অন্যথায় কার্যকারী অ্যাপ্লিকেশনটির কারণ হিসাবে সংক্ষেপে ক্রিয়াকলাপের স্ক্রিনটি এমন একটিতে দেখায় যা সর্বদা "অ্যাপ্লিকেশন প্রতিক্রিয়া বন্ধ করে" বার্তা দেয়।
আলজি

33

হ্যাঁ আপনি যখন আপনার অ্যাপ্লিকেশন বুট হয় তখন কেবল BroadcastReceiverএমন একটি তৈরি করে আপনি এটি করতে পারেন Service। আমার দেওয়া একটি সম্পূর্ণ উত্তর এখানে is
অ্যান্ড্রয়েড - বুটে সার্ভিস শুরু করুন

আপনি যদি অ্যাপ্লিকেশনটির জন্য কোনও আইকন / লঞ্চার না চান তবে আপনি এটি করতে পারেন, কেবল কোনও ক্রিয়াকলাপ তৈরি করবেন না

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Serviceসাধারণত আপনার হিসাবে ঘোষিত হিসাবে ঘোষণা।


4
এটি Serviceবুটআপটি চালু করার সাথে সাথে প্রশ্নকর্তা ঠিকঠাক বলে মনে হচ্ছে তবে কীভাবে কোনও প্রধান থাকবে না তা জানতে চান Activity, তবে Serviceলঞ্চ আইকনটি টিপানো অবস্থায় কেবল চলছে কিনা তা নিশ্চিত করুন ।
দর্শনা রিভকা হুইটল

4
তবে মনে হচ্ছে তারা কোনও লঞ্চার আইকন চায় যা চাপলে, পরিষেবাটি চলমান তা নিশ্চিত করে। আপনার পরামর্শটি কেবল লঞ্চার আইকন থেকে মুক্তি পাবে।
দর্শনা রিভকা হুইটল

@ ললিটপপতানি সমাধানটি ঠিক আছে ut তবে আমি আমার ফোনটি বুট না করা পর্যন্ত আমার পরিষেবা শুরু হবে না।
মেহের

4
আমি SyncAdapter ব্যতীত AndroidMenLive.xML এ MAIN, লঞ্চ ছাড়াই আমার অ্যাপ্লিকেশনটি আরম্ভ করতে পারি না। আপনার উত্তর কি সত্য?
sunghun

4
আমি ক্রিয়া এবং বিভাগ ট্যাগ সহ অভিপ্রায়কারী ফিল্টার সরিয়েছি। এখন অ্যাপ আর অ্যান্ড্রয়েড স্টুডিওতে চলছে না
নওমান অ্যাশ

12

কোনও ক্রিয়াকলাপ বা পরিষেবা না দিয়ে অ্যাপ তৈরির কারণটি হোমস্ক্রীন উইজেট অ্যাপ তৈরি করতে পারে যা শুরু করার দরকার নেই।
আপনি একবার প্রকল্প শুরু করার পরে কোনও ক্রিয়াকলাপ তৈরি করবেন না। আপনি প্রকল্পটি তৈরি করার পরে সবেমাত্র হিট রান করুন। অ্যান্ড্রয়েড স্টুডিও বলবে No default activity found

ক্লিক করুন সম্পাদনা কনফিগারেশন (এইখান থেকে চালান মেনু) এবং লঞ্চ বিকল্প অংশ নির্ধারণ করে লঞ্চ মান কিছুই । তারপরে ওকে ক্লিক করুন এবং অ্যাপটি চালান।

( যেহেতু কোনও লঞ্চার ক্রিয়াকলাপ নেই তাই অ্যাপ্লিকেশন মেনুতে কোনও অ্যাপ্লিকেশন প্রদর্শিত হবে না ))


4
ধন্যবাদ, এটা আমার ক্ষেত্রে ছিল। আমার মতো সম্পাদনা কনফিগারেশন আপনি যদি না দেখতে পান তবে প্রধান মেনু থেকে চালান> চালান ... এবং তারপরে কনফিগারেশন সম্পাদনা নির্বাচন করুন ... নির্বাচন করুন
সন্ধ্যা _

6

অ্যান্ড্রয়েড স্টুডিও সংস্করণ 2.3

কয়েকটি সহজ পদক্ষেপ অনুসরণ করে আপনি একটি প্রধান ক্রিয়াকলাপ ছাড়াই পরিষেবা তৈরি করতে পারেন। আপনি অ্যান্ড্রয়েড স্টুডিওর মাধ্যমে এই অ্যাপটি ইনস্টল করতে সক্ষম হবেন এবং এটিকে একটি সাধারণ অ্যাপের মতো ডিবাগ করতে পারবেন।

প্রথমে অ্যাক্রয়েড ছাড়াই অ্যান্ড্রয়েড স্টুডিওতে একটি প্রকল্প তৈরি করুন। তারপরে আপনার পরিষেবা শ্রেণি তৈরি করুন এবং পরিষেবাটি আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে যুক্ত করুন

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <service android:name="com.whatever.myservice.MyService">
        <intent-filter>
            <action android:name="com.whatever.myservice.MyService" />
        </intent-filter>
    </service>
</application>

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

একবার ইনস্টল হয়ে গেলে পরিষেবাটি চলবে না তবে আপনি এটি এইডিবি শেল কমান্ড দিয়ে শুরু করতে সক্ষম হবেন ...

am startservice -n com.whatever.myservice/.MyService

এটি দিয়ে চলছে তা পরীক্ষা করতে পারে ...

ps | grep whatever

আমি এখনও চেষ্টা করি নি তবে আপনার সম্ভবত অ্যান্ড্রয়েড স্টুডিওও স্বয়ংক্রিয়ভাবে পরিষেবাটি শুরু করতে পারে। এটি "কনফিগারেশন সম্পাদনা করুন" মেনুতে করা হবে।


আমি অ্যাডবি শেল থেকে নিম্নলিখিত ত্রুটি পেয়েছি: পরিষেবা শুরু করা: উদ্দেশ্য {সিএমপি = com.example.wolk.myapp / .MyIntantService; ত্রুটি: পাওয়া যায় নি; কোনও পরিষেবা শুরু হয়নি। Logcat শো: ActivityManager: ServiceInfo শুরু করার অনুমতি দেয় না {274d8af com.example.wolk.myapp.MyIntentService
Trismegistos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.