我使用一个Handler,它发布了一些Runnablevia postDelayed(r, DELAY_TIME),但我需要Runnables在发布新的via之前执行所有操作postDelayed.
任何好的想法如何尽可能简单地实现这一点?
编辑:
我希望它基本上像这样:
Runnable r = new Runnable() {
// Do some fancy action
};
if (mHandler.runnablesScheduled) {
mHandler.flushAllScheduledRunnables();
}
mHandler.postDelayed(r, DELAY);
Run Code Online (Sandbox Code Playgroud) 如果我启动后台线程,如果在线程终止之前从finish()开始的活动将会发生什么.线程是否会终止,还是会保持活着状态?
new Thread(new Runnable() {
public void run() {
while (mProgressStatus > 0) {
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressbar.setProgress(mProgressStatus);
}
});
}
}
}).start();
Run Code Online (Sandbox Code Playgroud) 问题是,我在哪里告诉我的 Thread 将mHandler用于Looper?
谢谢你。我正在使用以下代码:
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
Run Code Online (Sandbox Code Playgroud) 在服务中延迟执行的方法是使用handler.postdelayed 或Alarmmanager。利弊是什么。
我有 2 个服务 (a) 进行后台处理并通过广播消息更新 UI (b) 进行一些计算并每 5 秒更新一次主屏幕小部件。
谢谢
我正在开发一个应用程序,它要求它每隔x分钟上线并检查一些新数据.为防止繁重的网络和数据使用,任务应以固定速率运行,但这种解决方案的最佳使用方法是什么?一个Handler或一个Timer对象?
我是一名iOS开发人员,开始学习Android.在Swift中,创建一个完成处理程序非常简单,但我仍然找不到用Java编写的方法.
很抱歉,如果这个问题对于StackOverflow人来说太棒了.
问题
我正在创建一个类来处理我使用Retrofit完成的所有Http请求.
我让这个功能是我的 RequestHelper.java
public static void checkEmailAvailability(String email) {
MyWebServiceAPI serviceAPI = retrofit.create(MyWebServiceAPI.class);
Call<APIResults> call = serviceAPI.checkEmailAvailability(getAuthenticationHeader(), RequestBody.create(MediaType.parse("text/plain"), email));
call.enqueue(new Callback<APIResults>() {
@Override
public void onResponse(retrofit.Response<APIResults> response, Retrofit retrofit) {
//Parse Response Json
//Get some value and place it inside an object
//ANDI WOULD LIKE RETURN SOME BOOLEAN VALUE AND SOME OTHER STRING
}
@Override
public void onFailure(Throwable t) {
//I WOULD LIKE A BOOLEAN VALUE HERE
}
});
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼它 MainActivity
RequestHelper.checkEmailAvailability("user@user.com");
Run Code Online (Sandbox Code Playgroud)
现在该函数仍然无效但我希望它在on onResponse和onFailure …
java android event-handling android-handler androidhttpclient
在不同版本的Android和设备上,RecyclerView Adapter中出现错误.我每秒检索有关下载进度的信息,并显示项目布局的百分比.
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
final Download item = downloads.get(position);
holder.titleTv.setText(downloads.get(position).getTitle());
Cursor cursor = downloadManager.query(
new DownloadManager.Query().setFilterById(item.getDownloadId()));
if (cursor != null && cursor.moveToNext()) {
int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
if (status == DownloadManager.STATUS_RUNNING
|| status == DownloadManager.STATUS_PENDING)
new Runnable() {
@Override
public void run() {
Cursor c = downloadManager.query(
new DownloadManager.Query()
.setFilterById(item.getDownloadId()));
float percent = 100;
if (c != null) {
if (c.moveToNext()) {
int downloadedBytes = c.getInt(c.getColumnIndex(
DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)
);
int totalBytes = c.getInt(c.getColumnIndex( …Run Code Online (Sandbox Code Playgroud) java android listadapter android-handler android-download-manager
我的自定义处理程序类中发生了某些内存泄漏,但不确定如何修复它.在线检查了几个例子,但没有什么是我的代码特定的,所以不知道如何去做:
private val startupCallback = object: RetryCallback(NUMBER, DELAY) {
override fun onRetry(retryCount: Int) {
mySdkApi.applicationStartup(this)
}
override fun onCompleted(): Boolean {
updateStatus(Callback.Status.StartUpSDK)
return true
}
override fun onFailed(e: MyException?) {
updateStatus(Callback.Status.StartUpSDK, "", e)
}
}
Run Code Online (Sandbox Code Playgroud)
Android工作室不断提示"此处理程序类应该是静态的,否则可能会发生泄漏".任何想法如何去做?
编码:
var shouldStopLoop = false
val handler = object : Handler()
val runnable = object: Runnable //error occurs here
{
override fun run() {
getSubsData()
if(!shouldStopLoop)
{
handler.postDelayed(this, 5000)
}
}
}
handler.post(runnable)
Run Code Online (Sandbox Code Playgroud)
Expecting a class body尝试创建val runnable.
该文档说它将“创建一个新的处理程序,其发布的消息和可运行对象不受同步障碍的影响,例如显示 vsync。”
这是什么意思?什么时候应该使用 createAsync()?
android ×10
android-handler ×10
java ×3
kotlin ×2
runnable ×2
alarmmanager ×1
handler ×1
listadapter ×1
memory-leaks ×1
widget ×1