如何定期唤醒我的应用程序

时间:2013-03-14 14:38:56

标签: android service android-alarms background-service

我想在Android中制作一项功能,例如提醒功能。

我想启动我的app / activity,当它没有运行时,或者它的UI是不可见的。

它与提醒一样,可以在所需的时间唤醒应用程序。

我没有使用任何类型的后台任务或服务, 所以我不知道该怎么做 或者我应该研究什么类型的课程或演示?

任何人都可以通过演示或教程链接给我一些建议。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您好使用以下代码。这是服务。通过在警报管理器中使用待处理的Intent,您可以在所需的时间打开UI。

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
public class ScheduleCheckService extends Service{

    private Timer timer;
    final  int REFRESH=0;
    Context context;
    private PendingIntent pendingIntent;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        context=this;
        //==============================================

        TimerTask refresher;
        // Initialization code in onCreate or similar:
        timer = new Timer();    
        refresher = new TimerTask() {
            public void run() {
              handler.sendEmptyMessage(0);
            };
        };
        // first event immediately,  following after 1 seconds each
        timer.scheduleAtFixedRate(refresher, 0,1000); 
        //=======================================================

    }

    final Handler handler = new Handler() {


        public void handleMessage(Message msg) {
              switch (msg.what) {
              case REFRESH: 
                   //your code here 


                  break;
              default:
                  break;
              }
          }
        };


         void PendingIntentmethod()
         {
         Intent myIntent = new Intent(context, YOURCLASS.class);        
         pendingIntent = PendingIntent.getActivity(context, 0, myIntent, 0);
         AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();


         }




}

启动服务并在需要时停止服务,也不要忘记在清单文件中注册它。

答案 1 :(得分:1)

查看Android服务类 http://developer.android.com/reference/android/app/Service.html

通过此服务,您可以定期启动(使用TimerTask)Intent来打开您的应用程序或只设置通知,用户可以使用所需的活动打开应用程序。我更喜欢第二种选择,因为他的用户不希望某个时候只打开一个应用程序。

这是一个简单的服务教程: http://www.vogella.com/articles/AndroidServices/article.html