Joã*_*lva 6 java multithreading android runnable
我已经搜索了如何为我的程序执行"自动刷新"或可运行的方法,我看到一些关于处理程序和线程的帖子...我认为我搜索的是一个线程,但我不能让程序工作. ..让我给你看一些代码:
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();
}
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
所以,这部分代码应该从用户那里得到一个数字,然后执行getUrlText(); 每隔x分钟,其中x是用户输入的数字......我的问题应该是在运行但我无法弄清楚是什么...谢谢你提前帮助:)
这是一种方法.
在您的活动中声明这些:
Handler handler = new Handler();
Runnable timedTask = new Runnable(){
@Override
public void run() {
getUrlText();
handler.postDelayed(timedTask, 1000);
}};
Run Code Online (Sandbox Code Playgroud)
然后设置你的onClick:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getUrlText();
handler.post(timedTask);
}
});
Run Code Online (Sandbox Code Playgroud)
这将timedTask每1000毫秒执行一次.根据需要增加此数字.
我不确定你在做什么mins等等,但是把你需要定期执行的所有逻辑都放到了timedTask Runnable.希望有道理.
您可以使用此代码实现自动刷新活动一段时间,如下所示.
首先,您可以使用标头名称空间,如下所示.
import android.os.Handler;
Run Code Online (Sandbox Code Playgroud)
创建新实例后Handler.
private final Handler handler = new Handler();
Run Code Online (Sandbox Code Playgroud)
然后编写一个刷新方法,如下所示,并调用OnCreate方法范围,这里我使用了5000毫秒或5秒.你可以随意改变.
private void doTheAutoRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Write code for your refresh logic
doTheAutoRefresh();
}
}, 5000);
}
Run Code Online (Sandbox Code Playgroud)
自动刷新的put方法的最终代码如下.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doTheAutoRefresh();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22327 次 |
| 最近记录: |