Anda di halaman 1dari 13

Windows Phone 8

Application Lifecycle
Kevin Kurniawan

Windows Phone
Daftar Isi

Application Lifecycle ................................................................................................................................. 1
Asynchronous Method .............................................................................................................................. 5
Background Agent ..................................................................................................................................... 7



1

Application Lifecycle

Windows Phone memiliki struktur yang komplit dalam mengeksekusi setiap hal yang terjadi di dalam
aplikasi kita. Mulai dari aplikasi pertama kali dijalankan hingga dinonaktifkan. Seluruh struktur yang ada
di dalam windows phone ini disediakan untuk memberikan kecepatan pada aplikasi dan windows phone
hanya mengizinkan satu aplikasi yang berjalan dalam satu waktu.
Berikut adalah alur dari sisklus yang ada di windows phone :
Launching adalah kondisi dimana aplikasi pertama kali dibuka baik itu dari menu aplikasi yang
telah terinstal atau dari menu yang ada di start screen. Sebaiknya pada kondisi ini aplikasi tidak
mengambil data dari isolated storage atau dari local database karena akan membuat aplikasi
terkesan lama pada saat diaktifkan.
Activated adalah kondisi dimana aplikasi yang disimpan di background dipanggil kembali.
Deactivated adalah kondisi dimana aplikasi yang sedang running kita simpan ke bagian
background.
Closing adalah kondisi dimana user menekan tombol back di bagian halaman terakhir sehingga
mengakibatkan aplikasi tertutup
Untuk melihat dimana kita bisa menghandle kode tersebut. Pertama tama kita bukan visual studio dan
buat project baru.




2

Setelah itu buka app.xaml maka anda akan melihat tampilan seperti berikut.

Disana tertulis seperti berikut.
<shell:PhoneApplicationService
Launching="Application_Launching" Closing="Application_Closing"
Activated="Application_Activated" Deactivated="Application_Deactivated"/>
Itu adalah method dimana kita bisa mengakses lifecycle dari windows phone. Untuk mengakses nya kita
tinggal klik kanan di bagian Launching="Application_Launching lalu pilih Navigate To Event Handler dan
kita akan masuk ke halaman berikut.
3


Untuk mencoba apakah method itu benar benar berjalan maka kita akan memberikan titik merah di
bagian Application_Launching seperti gambar berikut. Yang dapat anda lakukan dengan mengklik di
bagian tepi program. Tanda tersebut menandakan debuging akan berhenti saat menemukan titik merah
sebagai penanda.

Setelah menekan F5 dan pada saat pertama kali sebelum aplikasi dijalankan maka debuging akan
berhenti dan di tombol bagian merah tersebut juga akan terdapat tanda panah yang menandakan
program terhenti di Application_launching.
4



5

Asynchronous Method

Asynchronous method adalah method yang akan berjalan di background atau tidak akan mengganggu
proses dari method lainnya. Misalnya dalam aplikasi nyata adalah aplikasi twitter. Aplikasi twitter masih
bisa digunakan atau berinteraksi dengan user walaupun aplikasi tersebut sedang request twit terbaru
dari user lain nya. Proses itu lah yang disebutkan asynchronous. Berikut adalah potongan kode program
untuk menjalankan asynchronous method.
private async void TestMethod()
{

}
Untuk membuat asynchronous method kita cukup perlu menuliskan async sebelum di bagian depan
method tersebut sehingga proses di dalam TestMethod tersebut tidak akan mengganggu proses lainnya.
Berikut adalah contoh kode program yang digunakan untuk menarik gambar secara asynchronous.
private async void TestMethod()
{
Uri _uri = new Uri("http://www.controltheweb.com/images/desktop-background-
large/MIT.jpg");
myImage.Source = new BitmapImage(_uri);
}
Sehingga proses pengambilan gambar tersebut tidak akan mengganggu proses lain nya. Selain itu
metode asynchronous juga masih bisa dipakai untuk yang lainnya. Misalnya untuk mengambil data
string sebuah xml. Aplikasi akan mengambil data xml dari http://data.bmkg.go.id/cuaca_indo_1.xml
yang berisi xml tentang ramalan cuaca indonesia. Berikut adalah potongan kode program untuk
mengambil data string dari sebuah url dengan menggunakan metode asynchronous.
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://data.bmkg.go.id/cuaca_indo_1.xml"));
wc.DownloadStringCompleted += wc_DownloadStringCompleted;
}

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
MessageBox.Show(e.Result.ToString());
}
Anda dapat mengolah data tersebut setelah di dapat kan di method DownloadStringCompleted yang
berupa e.Result. Berikut adalah tampilan saat kode program dijalankan.
6




7

Background Agent
Background agent adalah sebuah fungsi yang disediakan oleh Windows Phone yang digunakan untuk
menjalankan sesuatu pada interval waktu tertentu. Berikut adanya beberapa API yang tidak disupport.
Anda dapat melihat list nya di
http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202962(v=vs.105).aspx
Terdapat 2 buah jenis background agent yaitu PeriodicTask dan ResourceIntensiveTask perbedaan nya
adalah PeriodicTask digunakan untuk durasi yang singkat dan ResourceIntensiveTask digunakan untuk
durasi yang lama.
Untuk menggunakan Background agent pertama tama kita buat project baru seperti gambar berikut.

Setelah itu kita klik kanan di bagian solution explorer dan tambahkan project Windows Phone Scheduled
Task Agent seperti gambar berikut.
8


Dan setelah ditambahkan maka hasilnya akan seperti berikut.

Untuk menggunakan Background Agent kita buka di Properties file WMAppManifest.xml klik kanan dan
pilih Open With XML (Text) Editor with Encoding yang hasil nya seperti gambar berikut.
9


Jangan lupa untuk menambahkan di bagian Task sebuah tag seperti berikut.
<ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Specifier="ScheduledTaskAgent" Name="ScheduledTaskAgent1"
Source="ScheduledTaskAgent1" Type="ScheduledTaskAgent1.ScheduledAgent" />
</ExtendedTask>
Setelah itu kita masuk ke References dan jangan lupa tambahkan ScheduleTaskAgent yang tadi sudah
kita tambahkan di bagian solution seperti gambar berikut :

Untuk menjalankan background agent ini jangan lupa menambahkan beberapa cabilities di dalam
WMAppManifest.xml. Berikut ini capabilities yang diperlukan saat pembuatan background agent.
ID_CAP_IDENTITY_DEVICE
10

ID_CAP_IDENTITY_USER
ID_CAP_PUSH_NOTIFICATION
Setelah itu buka bagian project Windows Phone Scheduled Task Agent yang tadi telah kita tambahkan.
Dan kita tambahkan potongan kode program berikut di bagian OnInvoke.
protected override void OnInvoke(ScheduledTask task)
{
ShellToast toast = new ShellToast();
toast.Title = "Windows Phone Workshop";
toast.Content = "Notification";
toast.Show();

ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(60));

NotifyComplete();
}
Kode program di atas digunakan untuk menambahkan notification yang akan mengeluarkan toast
notification.
Bagian ini akan dicontohkan membuat push notification sederhana menggunakan background agent.
Lalu kita membuat potongan kode program berikut di Method Application_Closing yang berada di
bagian App.xaml.cs. Sehingga aplikasi akan membuat background agent pada saat aplikasi tersebut
ditutup. Itu adalah salah satu dari contoh penggunaan Application Lifecycle di Windows Phone.
PeriodicTask periodicTask;
string periodicTaskName = "MyPeriodicAgent";
private void Application_Closing(object sender, ClosingEventArgs e)
{
periodicTask = ScheduledActionService.Find(periodicTaskName) as PeriodicTask;

if (periodicTask != null)
{
RemoveAgent(periodicTaskName);
}

periodicTask = new PeriodicTask(periodicTaskName);
periodicTask.ExpirationTime = DateTime.Now.AddDays(14);
periodicTask.Description = "This demonstrates a periodic task.";

ScheduledActionService.Add(periodicTask);

ScheduledActionService.LaunchForTest(periodicTask.Name, TimeSpan.FromSeconds(60));

if (!periodicTask.IsScheduled || periodicTask.ExpirationTime < DateTime.Now)
{
periodicTask.ExpirationTime = DateTime.Now.AddDays(14);
ScheduledActionService.LaunchForTest(periodicTask.Name, TimeSpan.FromSeconds(60));
11

}
}

private void RemoveAgent(string name)
{
try
{
ScheduledActionService.Remove(name);
}
catch (Exception)
{
}
}
ScheduledActionService.LaunchForTest(periodicTask.Name, TimeSpan.FromSeconds(60)); berarti
method di dalam OnInvoke akan dijalankan setiap 60 Detik atau setiap 1 Menit.
Dan berikut adalah tampilan saat kode program dijalankan.

Anda mungkin juga menyukai