0

我需要創建一個基本上只有一個啓動/停止按鈕和一個帶有一些信息的字段的Android Widget。開始按鈕應該啓動一個服務,每秒鐘獲得一個結果。該結果的一部分應該顯示在Widget中,並且可以通過按停止按鈕再次停止該服務。Android Widget可以啓動/停止服務並每秒接收更新

任何人都可以指出我請進入正確的方向如何戰略實施這將是?

我現在讀了很多,但我真的不確定。根據我的理解,AlarmManager會過度殺傷電池,導致電池耗盡,或使手機無法響應。另外我不能使用BroadcastReceiver,因爲服務需要5秒以上(??不確定)。

任何幫助表示讚賞!

回答

0

首先,建議您在從窗口小部件創建服務時,應儘快停止該服務,因爲正在運行的服務會使用電池和內存。

爲了使窗口小部件,這將是有益的: -

public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
    // TODO Auto-generated method stub 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 
    for (int i = 0; i < appWidgetIds.length; i++) { 
     int appWidgetId = appWidgetIds[i]; 
     //Give the name of service you want to start in your case Alarm Service 
     Intent intent = new Intent(context, WidgetService.class); 
     PendingIntent pendingIntent = PendingIntent.getService(context, 0, 
       intent, 0); 
     //This basically sets the layout of your widget to widget_layout 
     RemoteViews views = new RemoteViews(context.getPackageName(), 
       R.layout.widget_layout); 
     views.setOnClickPendingIntent(R.id.imageView1, pendingIntent); 

     appWidgetManager.updateAppWidget(appWidgetId, views); 

    } 

爲您服務類,你可以使用stopSelf()中的OnStart()methood做你需要更改後。