在Android 12中使用Futures和AppSearch,需要在项目中添加如下依赖:
dependencies {
implementation("androidx.concurrent:concurrent-futures:1.1.0")
implementation("androidx.appsearch:appsearch:1.0.0-beta01")
}
使用Futures的示例代码如下:
import androidx.concurrent.futures.CallbackToFutureAdapter;
import androidx.concurrent.futures.Futures;
import com.google.common.util.concurrent.ListenableFuture;
public class MainActivity extends AppCompatActivity {
private ExecutorService mExecutor = Executors.newSingleThreadExecutor();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListenableFuture futureResult = CallbackToFutureAdapter.getFuture(completer -> {
mExecutor.submit(() -> {
// do some background processing, and return the result when complete
String result = "Hello World!";
completer.set(result);
});
// clean up task if it is cancelled before started
return () -> {
// do some cleanup, if necessary
};
});
Futures.addCallback(futureResult, new FutureCallback() {
@Override
public void onSuccess(@NullableDecl String result) {
Log.d("FutureResult", result);
}
@Override
public void onFailure(Throwable t) {
}
}, mExecutor);
}
}
使用AppSearch的示例代码如下:
import android.app.assist.AssistContent;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appsearch.AppSearchBatchResult;
import androidx.appsearch.AppSearchClient;
import androidx.appsearch.exceptions.AppSearchException;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private AppSearchClient mAppSearchClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAppSearchClient = AppSearchClient.create(this);
List phoneList = Phone.getPhones();
// Inserting all phones into AppSearch index
mAppSearchClient.put(phoneList).whenComplete((appSearchBatch