2013-06-14 36 views
6

tôi có tìm kiếm cách tôi có thể thực hiện "Tự động làm mới" hoặc phương pháp runnable cho chương trình của mình, tôi thấy một số bài viết về trình xử lý và chủ đề ... Tôi nghĩ rằng tìm kiếm từ là một chủ đề nhưng tôi không thể có được những chương trình để làm việc ... Hãy để tôi chỉ cho bạn một số mã:Android: "Tự động làm mới" sau một thời gian nhất định

refresh.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      getUrlText(); 
      if (time.getText().toString().equals("") 
        || time.getText().toString().equals("0")) { 
       mins = 0; 
      } else { 

       mins = Integer.parseInt(time.getText().toString()); 
       setTimer(mins); 
       t.start(); 


      } 

     } 

     private void setTimer(int mins) { 
      miliSecTime = mins * 60 * 1000; 

     } 
    }); 

    t= new Thread() { 
     @Override 
     public void run() { 
      long start = System.currentTimeMillis(); 

      while (true) { 
       long time = System.currentTimeMillis() - start; 
       int seconds = (int) (time/1000); 
       if (seconds > miliSecTime) { 
        getUrlText(); 
        start = System.currentTimeMillis(); 

       } 
      } 
     } 
    }; 
} 

Vì vậy, phần mã này sẽ nhận được một số từ người sử dụng và sau đó thực hiện getUrlText() ; mỗi x phút, trong đó x là số mà người dùng nhập vào ... Vấn đề của tôi phải được thực hiện nhưng tôi không thể hiểu được ... Cảm ơn bạn đã trợ giúp :)

+0

Để có điều gì đó tương tự, bạn nên sử dụng http://developer.android.com/reference/android/app/AlarmManager.html. – 323go

Trả lời

8

Đây là một cách để làm điều đó.

Khai báo này trong hoạt động của bạn:

Handler handler = new Handler(); 
Runnable timedTask = new Runnable(){ 

    @Override 
    public void run() { 
     getUrlText(); 
     handler.postDelayed(timedTask, 1000); 
    }}; 

Sau đó thiết lập onClick của bạn:

button.setOnClickListener(new OnClickListener() { 

    @Override 
     public void onClick(View v) { 
      getUrlText(); 
      handler.post(timedTask); 
     } 
    }); 

này sẽ thực hiện timedTask mỗi 1000 mili giây. Tăng số này nếu cần.

Tôi không chắc chắn bạn đang làm gì với mins, v.v. nhưng đặt tất cả logic của bạn cần được thực hiện định kỳ vào timedTaskRunnable. Hy vọng rằng có ý nghĩa.

2

1. tạo Handler

Handler handler = new Handler(); 

2. Tạo đối tượng Runnable

public final Runnable runnable = new Runnable() { 

    @Override 
    public void run() { 
     // your code while refreshing activity 
    } 
}; 

3. Gọi Phương pháp Handler Object

handler.postDelayed(runnable, 3000); 

// 3000 là thời gian trong mili giây

// đưa phương pháp này trong onCreate()

// onResume() hoặc ở đâu sảng khoái nơi cất

5

Bạn có thể sử dụng mã này để thực hiện các Auto-Refresh hoạt động của bạn trong một thời gian nhất định như dưới đây.

Trước tiên, bạn có thể sử dụng không gian tên của tiêu đề như bên dưới.

import android.os.Handler; 

Sau khi tạo phiên bản mới Handler.

private final Handler handler = new Handler(); 

Sau đó viết một phương pháp một cho refresh như sau và gọi điện trong phạm vi OnCreate phương pháp, ở đây tôi đã sử dụng 5000 mili giây hoặc 5 giây. Bạn có thể thay đổi như mong muốn của bạn.

private void doTheAutoRefresh() { 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // Write code for your refresh logic 
      doTheAutoRefresh(); 
     } 
    }, 5000); 
} 

Mã cuối cùng để đưa phương thức làm mới tự động như sau.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    doTheAutoRefresh(); 
} 
Các vấn đề liên quan