我的程序第一个组件是activity.请问开机启动该如何延迟启动程序。重新启动是可以的,延迟启动一直没有搞定。我实验了TIMERTASK,不过没有成功,有大神告诉我说,TIMERTASK不能启动UI线程。所以不能启动ACITIVY.那该用哪一个定时器来启动呢。

解决方案 »

  1.   

    我又用postDelayed,可是好像也不行。
      

  2.   


      if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
       { 
        new Handler().postDelayed(new Runnable(){  
        public void run() {  
         //execute the task  
        Intent newIntent = new Intent(); 
        newIntent.setClass(context, MainActivity.class);  
       newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);               
        context.startActivity(newIntent);  
        Toast.makeText(context, "timer auto boot",   Toast.LENGTH_SHORT).sho();            
              }  
           }, 3*60*1000); 以上是我代码
      

  3.   

    开机启动一个service,在service里跑TimerTask来延迟启动Activity?
      

  4.   


    PendingIntent pi = PendingIntent.getActivity(context, 0, it, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*60*1000, pi);
    在收到开机广播那里加上这段代码  it是一个打开activity的intent
      

  5.   

    呃,你肯定是有个receiver对吧,在你的receiver里加个handler,然后收到boot complete的时候给handler发一个延时消息不行么,我觉得很简单啊。。
      

  6.   

    提供一种思路,可以开机启动一个Service,然后在Service中计时,时间到了再给你的Activity发广播,启动Activity