Background Task trong Windows Store App
Hôm nay, mình sẽ hướng dẫn tạo một app windows store có thể chạy ngầm, khi mà ứng dụng vẫn đang hoạt động dù bạn không thao tác hay đang thao tác một ứng dụng khác. Chủ đề chỉ cho bạn làm thế nào để tạo và đăng ký chạy nền trong Windows. Bắt đầu nào :)
1. Khái niệm
Background Task là tác vụ nền, cụ thể ở đây là tác vụ hay ứng dụng chạy nền trong Windows.Để dễ hình dung, bạn có thể dễ ràng nhận thấy trong thực tế có rất nhiều ứng dụng Background Task, vd: Unikey, Nhaccuatui, Facebook, Zalo, pm Diệt virust,.. Điểm chung của chúng bạn có thể nhận thấy là tuy bạn không tương tác (lockscreen, run app khác,.) nhưng nó vẫn hoạt động, chơi nhạc, đẩy thông báo, quyét virut ngầm,.. Đó là nhờ Background Task
Giờ bắt tay nào code nào :)
2. Thiết kế giao diện
Điều đầu tiên, dĩ nhiên là tạo project mới rồi :)
Vào Solution Explorer -> Mở Package.appxmanifest -> Declarations -> Trong Available Declarations chọn Background Task -> Add -> Tích System event trong Properties -> Nhập “BackgroundTasks.Update” trong Entry Point
Chọn MainPage.xaml, để quay lại phần thiết kế XAML
<TextBlock x:Name="lblResult" FontSize="25" Margin="458,418,508,250" Width="400"/><Button x:Name="btnRegister" Content="Register" Click="Register_Click" Margin="638,378,0,352"/>
Chọn vào nút Button vừa tạo
Giữ nút Ctrl và nhập đúp chuột vào để tạo sự kiện bên MainPage.xaml.cs
3. Code Xử Lý
Thêm thư việnKhai báo biến và tạo hàm fnChkReg(): kiểm tra xem Background Task đã được đăng ký hay chưausing Windows.ApplicationModel.Background;
Tạo hàm RegBgTask(): đăng ký Background Task
Tạo hàm UnRegBgTask(): hủy đăng ký Background Task
Trong sự kiện nút Register_Click
namespace BackgroundTask
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
bool r = false;
public MainPage()
{
this.InitializeComponent();
}
private void fnChkReg()
{
foreach(var t in BackgroundTaskRegistration.AllTasks)
{
if (t.Value.Name == "Update")
{
r = true;break;
}
if (r) { btnRegister.Content = "UnRegister";lblResult.Text = "Task Registered"; }
if (!r) { btnRegister.Content = "Register"; lblResult.Text = "Task UnRegistered"; }
}
}
private void RegBgTask(string n, string p)
{
BackgroundTaskBuilder b = new BackgroundTaskBuilder();
b.Name = n;
b.TaskEntryPoint = p;
b.SetTrigger(new SystemTrigger(SystemTriggerType.InternetAvailable, false));
BackgroundTaskRegistration t = b.Register();
}
private void UnRegBgTask(string name)
{
foreach(var t in BackgroundTaskRegistration.AllTasks)
{
if (t.Value.Name == Name) { t.Value.Unregister(true); }
}
}
private void Register_Click(object sender, RoutedEventArgs e)
{
if (r) { UnRegBgTask("Update"); r = false; } else { RegBgTask("Update", "BackgroudTask.Update"); }
fnChkReg();
}
}
}
4. Tổng kết
Qua bài hướng dẫn trên các mong các bạn hình dung và hiểu rõ hơn nguyên lý, cách hoạt động Background Task trong Windows Store App. Nó là thành phần thiết yếu trong đa phần app hiện nay.5. Tài liệu tham khảo
https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task
Video hướng dẫn bởi Mr.Tuan :)
Video hướng dẫn bởi Mr.Tuan :)
Không có nhận xét nào :
Đăng nhận xét