<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ~~~ package com.example.delaydemo; import java.util.Timer; import java.util.TimerTask; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { //非UI線程不能更新UI需要借助Handler Handler handler =new Handler() { public void handleMessage(android.os.Message msg) { setContentView(R.layout.main); }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome); //第一種方法就是啟動一個子線程做加載數據之類的耗時操作 //做完之后使用handler通知主線程更新UI // new Thread(new Runnable() { // @Override // public void run() { // // TODO Auto-generated method stub // try { // Thread.sleep(4000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // handler.sendEmptyMessage(0); // } // }).start(); //第二種方法 //直接使用handler,這里可以更新UI,原因是new Handler()相當于new Handler(getMainLooper()) //下面的Log打印的是main 說明還是運行在主線程中 // new Handler().postDelayed(new Runnable() // { // @Override // public void run() { // // TODO Auto-generated method stub // setContentView(R.layout.main); // Log.i("MainActivity", Thread.currentThread().getName()); // } // }, 4000); Timer timer = new Timer(); timer.schedule(task, 4000); //schedule(TimerTask task, long delay) //在延時delay毫秒后執行task。并沒有重復執行 // schedule(TimerTask task, long delay, long period) //在延時delay毫秒后重復的執行task,周期是period毫秒。 //也就是說在delay毫秒后每隔period毫秒執行一次task //schedule(TimerTask task, Date time) //在指定的時間執行一次 } //第三種方法 //使用TimerTask和handler TimerTask task = new TimerTask() { @Override public void run() { // TODO Auto-generated method stub handler.sendEmptyMessage(0); //這里打印的是 Timer-0 說明不是運行在主線程中 //若在這里直接使用setContentView(R.layout.main); //會報CalledFromWrongThreadException: Only the original thread that created a //view hierarchy can touch its views.錯誤 Log.i("MainActivity", Thread.currentThread().getName()); } }; } ~~~ 除了上面3種方法其實還可以使用AlarmManager來實現延時執行或重復執行,只是這種方法有點繁瑣,是用廣播機制實現的,對于循環執行的任務,如果需要停止執行的話,必須執行closeAlarm()方法,不然即使是退出了程序,這個任務還是會一直執行。 ~~~ package com.example.delaydemo; import java.util.Calendar; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class Alarm { /** * delay秒后執行一次 * @param context * @param delay */ public Alarm(Context context,int delay) { Intent intent =new Intent(context, AlarmReceiver.class); intent.setAction("com.alarm.justonce"); PendingIntent sender= PendingIntent.getBroadcast(context, 0, intent, 0); Calendar calendar=Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, delay); AlarmManager alarm=(AlarmManager)context.getSystemService(context.ALARM_SERVICE); alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); Toast.makeText(context, delay+"后alarm開啟", 2000).show(); } /** * 到firstTime 后 以period周期執行 * @param context * @param firstTime * @param period */ public Alarm(Context context,long firstTime,long period) { Intent intent =new Intent(context, AlarmReceiver.class); intent.setAction("com.alarm.repeating"); PendingIntent sender=PendingIntent .getBroadcast(context, 0, intent, 0); //開始時間 long firstime=firstTime; AlarmManager am=(AlarmManager)context.getSystemService(context.ALARM_SERVICE); //period秒一個周期,不停的發送廣播 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP , firstime, period*1000, sender); Toast.makeText(context, firstTime+"后alarm開啟", 2000).show(); } /** * 取消周期執行任務 * @param context */ public void closeAlarm(Context context) { Intent intent =new Intent(context, AlarmReceiver.class); intent.setAction("repeating"); PendingIntent sender=PendingIntent .getBroadcast(context, 0, intent, 0); AlarmManager alarm=(AlarmManager)context.getSystemService(context.ALARM_SERVICE); alarm.cancel(sender); } } ~~~ 廣播接受器,別忘了在Manifest中注冊 ~~~ package com.example.delaydemo; 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) { // TODO Auto-generated method stub if(intent.getAction().equals("com.alarm.justonce")) { Toast.makeText(context, "justonce alarm", 2000).show(); } else { Toast.makeText(context, "repeating alarm", 2000).show(); } } } ~~~ 最后附上程序:[http://download.csdn.net/detail/tangnengwu/7217595](http://download.csdn.net/detail/tangnengwu/7217595)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看