অনেক গুলো অ্যাপ রয়েছে, যেগুলো ব্যাকগ্রাউন্ডে কাজ করে। যে গুলোর কোন ইউজার ইন্টারফেস নেই। যে গুলোর সাথে আমরা কোন ইন্টারেক্ট করতে পারি না, সে অ্যাপ গুলো তৈরি করা হয়ে Service দিয়ে। যেমন আমরা মেইল অ্যাপ ব্যবহার করি, যেটা কিছুক্ষণ পর পর মেইল একাউন্ট চেক করে। ব্যাকগ্রাউন্ডে। এবং কোন মেইল আসলে আমাদের নটিফিকেশন দেয়। এটা একটা সার্ভিসের উদারহণ। কিভাবে সার্ভিস কাজ করে, তাই দেখব। কোন কোন অ্যাপ ব্যাকগ্রাউন্ডে কাজ করে ইন্টারনেট ব্যবহার করে ডেটা ডাউনলোড করে, পরে আমাদের তা দেখায়। তাও সার্ভিসের উদাহরণ।
সার্ভিস কিভাবে কাজ করে, তা দেখব। আমরা একটা সিম্পল এন্ড্রয়েড অ্যাপ তৈরি করে নিব আগে। যেমন Background App। এটার Main Layout ফাইলে আমরা দুইটা বাটন তৈরি করব। একটা হচ্ছে Start নামে, আরেকটা Stop নামে। Start এ ক্লিক করলে অ্যাপটি ব্যাকগ্রাউন্ডে কাজ করবে। আর একটা Toast দেখাবে, Service started নামে। আর স্টপ এ ক্লিক করলে অ্যাপটি ব্যাকগ্রাউন্ডে কাজ করা বন্ধ করবে এবং Toast দিয়ে একটা লেখা দেখাবে Service Stopped।
Start বাটনের ID দিয়েছি start. Stop বাটনের আইডি দিয়েছি Stop.
এখন অ্যাপটি রান করালে দুইটা বাটন দেখাবে, Start বাটন এবং Stop বাটন। আমরা এখন একটা Background Service ক্লাস তৈরি কব। যেটা Service সুপার ক্লাসকে এক্সটেন্ড করবে। তার জন্য আমাদের জাভা সোর্স ফোল্ডারের উপর রাট ক্লিক করে New > Class এ ক্লিক করি। এরপর ক্লাসের একটা নাম দি। যেমন BackgroundService, নিচের ছবিটি দেখতে পারিঃ
Service সুপার ক্লাসকে এক্সটেন্ড করব, তার জন্য BackgroundService এর পর লিখব extends Service। এখন Service এর মধ্যে কার্সর রেখে Ctrl + Space এ ক্লিক কলে আমাদের সুপার ক্লাস সিলেক্ট করার অপশন দিবে। অনেক গুলো সার্ভিস আমরা দেখতে পাবো। যেমন Bluethooth service সহ অন্যান্য। আমরা সিলেক্ট করব app.service টা। বা import android.app.Service; টা যুক্ত করে দিলেও হবে। নিচের ছবিটি দেখতে পারি।
আমরা BackgroundService ক্লাসে দুইটা মেথড তৈরি করব। একটা হচ্ছে onStartCommand, আরেকটা onDestroy মেথড। onStartCommand এ সার্ভিসটা শুরু হলে কি কি কাজ করবে ব্যাকগ্রাউন্ডে, সে কোড গুলো লিখব। আমরা শুধু মাত্র একটা Toast দেখাবো, Service Started নামে।
onDestroy কল করলে সার্ভিসটা বন্ধ করব।
BackgroundService ক্লাসের সম্পুর্ণ কোডঃ
public class BackgroundService extends Service { @Override public IBinder onBind(Intent intent){ return null; } @Override public int onStartCommand(Intent intent, int flags, int startID){ Toast.makeText(this, "Service started", Toast.LENGTH_LONG).show(); return START_STICKY; } @Override public void onDestroy(){ super.onDestroy(); Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show(); } }
এবার MainActivity.java ফাইলে ফেরা যাক। ধরে নিচ্ছি একটা বাটন কিভাবে কাজ করে [OnClickListener ইত্যাদি] এন্ড্রয়েডে তা আপনি পারেন। তাই ব্যাসিক গুলো আলোচনা করছি না। যখন Start বাটনে ক্লিক করবে, তখন ব্যাকগ্রাউন্ড সার্ভিস শুরু হবে, তার জন্য লিখবঃ
startService(new Intent(getBaseContext(), BackgroundService.class));
যখন Stop বাটনে ক্লিক করবে, তখন ব্যাকগ্রাউন্ড সার্ভিস বন্ধ হবে, তার জন্য লিখবঃ
stopService(new Intent(getBaseContext(), BackgroundService.class));
সম্পুর্ণ MainActivity.java কোডঃ
package me.jakir.backgroundapp; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button StartButton = (Button) findViewById(R.id.start); StartButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startService(new Intent(getBaseContext(), BackgroundService.class)); } }); Button StopButton = (Button) findViewById(R.id.stop); StopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { stopService(new Intent(getBaseContext(), BackgroundService.class)); } }); } }
সার্ভিস নিয়ে কাজ করার জন্য আমাদের অ্যান্ড্রয়েড Manifest এ তা বলে দিতে হবে। application ট্যাগ এর ভেতর লিখতে হবে
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="me.jakir.backgroundapp" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".BackgroundService"/> </application> </manifest>
এখানে BackgroundService হচ্ছে আমাদের ক্লাসের নাম। যে ক্লাসে আমরা সার্ভিস এক্সটেন্ড করে আমাদের কোড লিখেছি। এই তো। এভাবে এখন ব্যাকগ্রাউন্ডে কি কি কাজ করবে আপনার অ্যাপ, তার কোড লিখলে কাজ করতে থাকবে। হ্যাকিং, ট্র্যাকিং অ্যাপ গুলো এ সার্ভিস ব্যবহার করে তৈরি করা হয়। চিন্তা করে একটা তৈরি করে ফেলুন 😀
ভাইয়া, আমাকে একটু সাহায্য করেন।আমি Android development শিখতেছি eclipse ব্যবহার করে,এখন “Android sdk manager” সেট আপ করতে পারছি না।
কি সমস্যা, হচ্ছে তা সহ বললে ভালো হত।
ধন্যবাদ, জাকির ভাই|
আপনি কি bulk sms নিয়ে একটি পোষ্ট দিবেন, ভাইয়া।
ভাইয়া এইভাবে সার্ভিসের মাধ্যমে আমি লোকেশন ট্র্যাকের জন্য একটা প্রজেক্ট করার চেষ্টা করছি কিন্ত সমস্যা হচ্ছে সার্ভিস অন করার পর যখন আমি অ্যাপটাকে রান করাচ্ছি তখন আমি যেইটা করতে চাচ্ছি সেইটা হচ্ছে কিন্ত যখন অ্যাপ থেকে বের হয়ে অ্যাপটা ক্লোস করে দিচ্ছি তখন সেই কাজটা আর হচ্ছে না।যদিও অ্যাপটা তখনও ব্যাকগ্রাউণ্ডে রান করছে।কীভাবে অ্যাপ ক্লোস করার পরও আমি ঐ সার্ভিস ব্যবহার করে কোন কাজ করতে পারি ভাইয়া?
ধন্যবাদ