הדרכת שירותי אנדרואיד: כיצד להריץ יישום ברקע?



מדריך שירותי Android זה עוזר לך להבין כיצד לבצע פעולות ברקע כגון השמעת מוסיקה, אין ממשק משתמש מצורף אליו

לעתים קרובות באמצעות יישומים מרובים בטלפון החכם שלך, ייתכן שתרצה לעבור מיישום אחד לאחר, אך גם להבטיח שכל היישומים שלך יישארו פעילים ברקע. אלה אינם אלא השירותים המוצעים על ידי . לכן, מאמר זה בהדרכת שירותי Android יעזור לך להבין כיצד לעבוד עם השירותים.

אעסוק בנושאים הבאים:





מהם שירותי Android?

שירות הוא בעצם תהליך. שירות אנדרואיד הוא רכיב שרץ ברקע על מנת לבצע אותופעולות ארוכות טווח בלי אינטראקציה עם המשתמש וזה עובד גם אם היישום נהרס.רכיב יישום אחר יכול להפעיל שירות והוא ממשיך לפעול ברקע גם אם תעבור ליישום אחר.

בנוסף, רכיב יכול לקשור את עצמו לשירות על מנת לתקשר איתו ולבצע גם תקשורת בין-פרוצס.



מה עושה התראה ב JavaScript

הערה: שירות android.app.Service הוא תת-מחלקה של מחלקת ContextWrapper ושירות Android אינו שרשור או תהליך נפרד.

מחזור חיים של שירותי אנדרואיד

במחזור החיים של שירותי Android יכולים להיות שתי צורות שירותים. מחזור החיים של שירות עובר שני מסלולים שונים, כלומר:

  1. התחיל
  2. כָּרוּך

התחיל



שירות מופעל כאשר רכיב יישום מתקשר התחל שירות () שיטה. לאחר תחילתו, שירות יכול לפעול ברקע ללא הגבלת זמן, גם אם הרכיב האחראי על ההתחלה נהרס. זה נעצר באמצעות להפסיק את השירות () שיטה. השירות יכול גם לעצור את עצמו על ידי התקשרות ל- stopSelf () שיטה.

כָּרוּך

שירות מחויב כאשר רכיב יישום נקשר אליו על ידי התקשרות bindService () . שירות Bound מציע ממשק לקוח-שרת המאפשר לרכיבים לתקשר עם השירות, לשלוח בקשות ולקבל תוצאות. זה מעבד על פני תקשורת בין תהליכים (IPC). הלקוח יכול לבטל את קשירת השירות על ידי התקשרות אל unbindService () שיטה.

מחזור חיים של שירות אנדרואיד- הדרכת שירותי אנדרואיד- אדוריקה

בהמשך למקטע הבא במאמר זה בנושא שירותי Android, בואו נדון בשונהשיטות תחת מעמד השירות.

הדרכת שירותי Android: שיטות

ישנן מספר שיטות בהן ניתן לבצע פעולות בקלות בכל יישום. חלקם הם:

שיטהתיאור
onStartCommand ()

שיטה זו נקראת כאשר כל רכיב אחר, כמו למשל פעילות, מבקש להתחיל את השירות, על ידי התקשרות התחל שירות () .

באחריותך להפסיק את השירות כאשר העבודה המתאימה נעשית באמצעות שימוש stopSelf () אוֹ להפסיק את השירות () שיטות.

לפרק ()

מתקשר לשיטה זו כאשר רכיב אחר מעוניין להתקשר עם השירות על ידי התקשרות bindService () .

כדי ליישם זאת, עליך לספק ממשק בו הלקוחות משתמשים כדי לתקשר עם השירות. זה מחזיר IBinder לְהִתְנַגֵד. אם אינך רוצה לאפשר כריכה, אז חזור ריק .

onUnbind ()

המערכת קוראת לשיטה זו כאשר כל הלקוחות מנותקים מממשק מסוים שמפרסם השירות.

onRebind ()

מתקשר לשיטה זו כאשר לקוחות חדשים מחוברים לשירות לאחר שקיבלה בעבר הודעה כי כולם מנותקים onUnbind (כוונה) .

onCreate ()

המערכת קוראת לשיטה זו כאשר השירות נוצר לראשונה באמצעות onStartCommand () אוֹ לפרק () . נדרש לבצע הגדרה חד פעמית.

onDestroy ()

שיטה זו נקראת כאשר השירות כבר אינו בשימוש והוא נהרס. על השירות שלך ליישם זאת על מנת לנקות את כל המשאבים כגון נושאים, מאזינים רשומים, מקלטים וכו '.

קוד שלד

מחלקה ציבורית MainActivity מרחיבה פעילות {פרטי TextView textView מקלט BroadcastReceiver פרטי = BroadcastReceiver חדש () {@Override public void onReceive (הקשר הקשר, כוונת כוונה) {Bundle bundle = intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'ההורדה הושלמה. הורד URI:' + מחרוזת, Toast.LENGTH_LONG) .show () textView.setText ('ההורדה בוצעה')} אחר {Toast.makeText (MainActivity.this, 'ההורדה נכשלה', Toast.LENGTH_LONG) .show () textView.setText ('ההורדה נכשלה')}}} @ ביטול ריק בטלפון onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} בטל מוגן ב- @ Override onResume () {super.onRes ) registerReceiver (מקלט, IntentFilter חדש (DownloadService.NOTIFICATION))} @Override חלל מוגן onPause () {super.onPause () unregisterReceiver (מקלט)} חלל ציבורי onClick (תצוגת תצוגה) {Intent intention = new Intent (this, DownloadService.class) // הוסיפו מידע לשירות איזה קובץ להוריד ואיפה להוריד חנות intention.putExtra (DownloadService.FILENAME, 'index.html') intention.putExtra (DownloadService.URL, 'www.edureka.co') startService (כוונה) textView.setText ('השירות התחיל')}}

בדוגמה זו תוכלו לראות את השיטות כמו onCreate () , onResume () , onPause () . שיטות אלה מרכיבות את מבנה השירותים באנדרואיד.

עכשיו, כשמגיעים לחלק המעשי של הדרכת שירותי Android זו, בואו נראהכיצד ליצור שירות ולטפל בו.

הַדגָמָה

בואו נראה איך מנגנים מוזיקה ברקע. על מנת לעשות זאת, אשתמש סטודיו אנדריוד .

שלב 1

צור פרויקט ריק חדש. תן שם לפרוייקט שלך ולחץ על תיקיית Java ולחץ על פעילות עיקרית . ראשית, הוסף נגן מדיה כדי שתוכל לייבא את פרטי הנגן כמו התחלה, להגדיר את הלולאה וכן הלאה.

חבילה com.example.mydemo יישום ייבוא ​​androidx.appcompat.app.AppCompatActivity מחלקה ציבורית MainActivity מרחיב AppCompatActivity {@Override מוגן ריק onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (נגן R.layout.Player_main). (זה, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

הערה: אם אתה משתמש בו בפעם הראשונה, אל תשכח להפעיל את ה- BIOS. אתה יכול לעשות זאת על ידי הפעלה מחדש של המערכת שלך.

יהיה עליך להוסיף מכשיר וירטואלי. פשוט לחץ על פתח את מנהל ה- AVD.

בחר מכשיר לבחירתך ואתה מוכן לצאת לדרך!

פעולה זו תפעל רק כאשר המסך פעיל, אך כדי לגרום ליישום זה לעבוד אפילו ברקע, עליכם להוסיף עוד כמה שורות קוד ב activity_main.xml קוֹבֶץ.

שלב 2

לאחר הפעלת הקוד המתאים, תוכל להריץ את היישום ותוכל לנגן את המוסיקה ברקע, כלומר, אם יישום אחר ייפתח, שמע זה עדיין יושמע.

בואו נראה כיצד ניתן לעשות זאת.

  • צור מחלקה אחרת בתיקיית Java ושמה. הנה, קראתי לזה ' MyService '.
  • מחלקה זו מרחיבה את מחלקת השירות.
  • ברגע שיש לך את שיטות מחלקת השירות, יישם את השיטות על ידי לחיצה alt + Enter.
  • לאחר מכן, עליך לבטל את השיטות. אז לחץ באמצעות לחצן העכבר הימני על החלון כדי לקבל את האפשרויות.
  • צור את שיטות העקיפה, בחר onStartCommand () , ו OnDestroy ().
  • ערוך את onStartCommand () שיטות על ידי הוספת הקוד הבא .:
נגן MediaPlayer = MediaPlayer.create (זה, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

הערה: מחק קוד זה ב- פעילות עיקרית.

  • זה יגרום לשגיאה המבקשת ממך להסיר את ההצהרה. לכן, הסר את הצהרת ההחזר והצהיר על MediaPlayer כשיטה פרטית וחזור START_STICKY . זה יחזיר את סטטוס ההתחלה.
  • לְהוֹסִיף player.stop () בתוך ה onDestroy () שיטה.

שלב 3

לך ל בשר בקר וללכת לפריסות, לחץ על android_main.xml כדי לקבל את קובץ ה- XML ​​של היישום.

  • הסר את TextView והחלף אותו ב- LinearLayout והוסף לחצנים. הוסף את הקוד המתאים.
<פריסה לינארית דְמוּי אָדָם:נטייה= 'אנכי' דְמוּי אָדָם: layout_width= 'התאמת_הורה' דְמוּי אָדָם: פריסת_גובה= 'wrap_content' דְמוּי אָדָם: layout_center Vertical= 'נכון' כלים:להתעלם= 'חסרים אילוצים'><לַחְצָן דְמוּי אָדָם:תְעוּדַת זֶהוּת= '@ + id / buttonStart' דְמוּי אָדָם:טֶקסט= 'התחל שירות' דְמוּי אָדָם: layout_width= 'wrap_content' דְמוּי אָדָם: פריסת_גובה= 'התאמת_הורה'/><לַחְצָן דְמוּי אָדָם:תְעוּדַת זֶהוּת= '@ + id / buttonStop' דְמוּי אָדָם:טֶקסט= 'הפסק שירות' דְמוּי אָדָם: layout_width= 'wrap_content' דְמוּי אָדָם: פריסת_גובה= 'התאמת_הורה'/>פריסה לינארית>
  • לאחר שתעשה זאת, חזור אל ה- פעילות עיקרית class ולהוסיף את הקוד המתאים בכדי לקשר בין קובץ ה- XML ​​לבין ה- MyServiceClass.
חבילה com.example.newproject יבוא androidx.appcompat.app.AppCompatActivity מחלקה ציבורית MainActivity מרחיב את AppCompatActivity מיישמת View.OnClickListener {התחל כפתור פרטי, עצור @Override מוגן ריק onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) תצוגה .activity_main) התחלה = (כפתור) findViewById (R.id.buttonStart) עצירה = (כפתור) findViewById (R.id.buttonStop) start.setOnClickListener (זה) stop.setOnClickListener (זה)} @ ביטול ריק בטלפון onClick (הצג תצוגה ) {if (view == start) {startService (New Intent (this, MyServiceClass.class))} אחר אם (view == stop) {stopService (New Intent (this, MyServiceClass.class))}}}

שלב 4

לאחר שתסיים לקשר את הכיתות, בוא נפעיל את הקוד.

הערה: הוסף את שם מחלקת השירות בקובץ AndroidManifiest.xml.

לאחר מכן, בוא נפעיל את הקוד.

לאחר שתתחיל את השירות, הוא יפעל על הרקע גם אם ייפתח יישום אחר. באפשרותך להתחיל או להפסיק את השירות על ידי לחיצה על הכפתורים.

זו הדגמה פשוטה שבה למדת כיצד לעבוד עם שירותי Android.

אז עם זאת, אנו מגיעים לסוף מאמר זה בנושא 'הדרכת שירותי Android'.אני מקווה שאתה ברור עם הנושאים שמסוקרים בבלוג זה.

כעת, לאחר שעברתם את הבלוג שלנו בנושא שירותי הדרכה לשירותי Android, תוכלו לבדוק את זה של אדוריקה כדי להתחיל במהירות את הלמידה שלך.

יש לך שאלות? אל תשכח להזכיר אותם בתגובות בבלוג זה 'הדרכת שירותי אנדרואיד'. אנחנו נחזור אליך.