Android规划周期任务

问题:应用总要周期性的执行某项任务,例如检查服务器上的更新或者提醒用户做某些事情。

解决方案:用AlarmManager来管理和执行任务。AlarmManager可用于计划未来的单次或重复操作,甚至在应用没有运行时也可以执行任务。

AlarmManager通过发出PendingIntent来发出警告触发时执行各种系统的组件,例如Activity、Broadcast、Receiver、Service。

编写被触发的BroadcastReceiver

import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //可以执行一个有趣的操作,我们这里只是显示当前时间
        Calendar now = Calendar.getInstance();
        java.text.DateFormat formatter = SimpleDateFormat.getTimeInstance();
        Toast.makeText(context, formatter.format(now.getTime()), 100).show();

    }
}

BroadcastReceiver必须在Manifest文件中用<receiver>标签声明,否则AlarmManager就无法将其触发。

<receiver android:name=".AlarmReceiver"></receiver>

设置和取消提醒是通过PendingIntent实现的。我们创建一个直接指向应用的BroadcastReceiver的Intent,然后用getBroadcast()(因为我们创建了指向BroadcastReceiver的引用)从中创建一个PendingIntent。

import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

    private PendingIntent mAlarmIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //为两个按钮附加监听器
        findViewById(R.id.start).setOnClickListener(this);
        findViewById(R.id.stop).setOnClickListener(this);
        //创建提醒触发器
        Intent launchIntent = new Intent(this, AlarmReceiver.class);
        mAlarmIntent = PendingIntent.getBroadcast(this, 0, launchIntent, 0);
    }

    @Override
    public void onClick(View view) {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        long interval = 5*1000;
        switch (view.getId()) {
        case R.id.start:
            Toast.makeText(this, "Scheduled", 100).show();
            //ELAPSED_REALTIME根据时间触发提醒,如果设备处于休眠状态,会将设备激活。
            manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()+interval, interval, mAlarmIntent);
            break;
        case R.id.stop:
            Toast.makeText(this, "Canceled", 100).show();
            manager.cancel(mAlarmIntent);
            break;
        default:
            break;
        }
    }
}

Android规划周期任务

时间: 2024-08-10 19:02:29

Android规划周期任务的相关文章

Android生命周期里你或许不知道的事

Android生命周期估计连初学者都再熟悉不过的东西了,但这里我抛出几个问题,或许大家以前没有想过或者可能认识的有些错误. 一.当A启动B时,A和B生命周期方法执行的先后顺序是怎样的?当按返回键返回时,又是怎样的?(读者可以先想想,可能会跟你的答案不一致) A--->B时,打印结果如下: 按返回键B--->A,打印结果如下: 结论:先执行当前显示Activity的onPause方法,接着执行完将要显示Activity的生命周期方法,最后再执行当前显示Activity的其它生命周期方法 二.生命

android生命周期总结

管理Activity的生命周期 当用户浏览,离开和返回到你的app,Activity的实例在其生命周期的不同状态下转换.举例来说:当你的应用程序第一次启动时,它来到系统中突出的位置并且接收用户的焦点.(it comes to the foreground of the system and receives user focus.)在此过程中,当你装载用户界面和其他组件时,Android系统在你的Activity中调用了一系列的生命周期函数.如果用户做了一个动作启动了其他的activity或者切

Android 生命周期

与windows平台不同,Android应用程序不能控制自己的生命周期,应用程序组件必须监听应用程序的状态的变化并作出适当反应,特别要注意为随时被终止做好准备 默认情况下,每个Android应用程序都是通过他们自己的进程运行,每个进程都运行在独立的Dalvik实例中,每个应用程序的内存和进程管理都是由运行时进行专门处理的.通过使用android:process属性可以使同一个应用程序组件运行在不同的进程中,或者让多个应用程序共享一个进程 回收资源时,进程被终止的顺序是由它们的应用程序优先级决定的

Android生命周期(三)

一个Android应用程序的生命周期用以下图解释再清楚不过了. 创建一个demo,代码如下: public class MainActivity extends Activity { private static final String TAG = "Android_life"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.

[转]Android生命周期

转自:http://www.cnblogs.com/shaweng/archive/2012/07/03/2575302.html 三个循环 提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出,在这个图中包含了两层循环, 第一层循环是onPause -> onResume -> onPause, 第二层循环是onStop -> onResta

Android生命周期与Intent笔记

生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() 用户可交互时调用onPause() 用户不可交互时调用onStop() 用户不可见时调用onDestroy() 销毁时调用 启动与退出的循环Activity启动 onCreate() -- onStart() -- onResume()Activity退出 onPause() -- onStop(

Android生命周期 &amp; Activity生命周期

了解Android系统的进程优先级的变化方式 1.Android系统一般是运行在资源受限的硬件平台上,因此资源管理对Android系统很重要 2.为了保证高优先级程序正常运行,可以在无任何警告的情况下终止低优先级程序,并回收其使用的系统资源,因此,Android程序并不能完全控制自身的生命周期,而是由ANdroid系统进行调度和控制的 3.Android系统尽可能地不主动去终止应用程序,即使生命周期结束的程序也会保存在内存中,以便再次快速启动 4.但在内存紧张时,系统会根据进程的优先级清除进程,

Android生命周期详细说明

提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出,在这个图中包含了两层循环, 第一层循环是onPause -> onResume -> onPause, 第二层循环是onStop -> onRestart -> onStart -> onResume -> onPause -> onStop.我们可以将这两层循环看成

Android生命周期

Activity主要有以下七个回调方法: 1.onCreate() 在Activity第一次创建时调用. 2.onStart() 在Activity由不可见变为可见时调用. 3.onResume() 在Activity准备好之后调用,此时的Activity一定位于返回栈的栈顶,并且处于运行状态. 4.onPause() 在准备启动或者恢复另一个Activity的时候调用,可以在此方法中把消耗CPU的资源释放掉,保存一些重要数据,此方法执行速度要快,不能影响新的栈顶的Activity的使用. 5.