我正在使用okhttp库处理POST API.一切都工作正常,除了我无法找到一种方法来显示一个简单的吐司消息成功回调.如何向用户调用toast消息,以便他知道在成功和失败回调中是否在服务器上发布了数据?
PS下面的代码属于不属于活动类的不同类.
这是我的代码:
public DataSource(Context context) {
this.mContext = context;
mDbHelper = new DBHelper(mContext);
mDatabase = mDbHelper.getWritableDatabase();
}
post(URL, jsonData, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("FAILED", "onFailure: Failed to upload data to server");
//here I want to show toast message
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
Log.i("SUCCESSFUL", "onSuccess: data uploaded");
//here I want to show toast message
} else {
Log.i("UN SUCCESSFUL", "onFailure: Failed to upload data to server");
//here I want to show toast message
}
}
});
Run Code Online (Sandbox Code Playgroud)
小智 7
每个应用程序都有自己的特殊线程来运行UI对象,例如View对象; 这个线程称为UI线程.只有在UI线程上运行的对象才能访问该线程上的其他对象.由于您在线程池中的线程上运行的任务未在UI线程上运行,因此它们无权访问UI对象.要将数据从后台线程移动到UI线程,请使用在UI线程上运行的Handler,或者可以使用Android实现,如此处所示.
- 情况1
MyActivity.this.runOnUiThread(new Runnable() {
@Override
void run() {
Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();
});
Run Code Online (Sandbox Code Playgroud)
- 案例2
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
如果它是主线程你会直接使用它像
Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2472 次 |
| 最近记录: |