Android团队不时改变他们的方法来获取当前正在运行的应用程序.我能够将当前正在运行的应用程序升级到Marshmallow 6.0版本,但我想问一下如何在Nougat 7.0版本中获取这些应用程序?反正有吗?请指导解决方案.我经常搜索,但可以找到任何合适的方法.
谢谢
android foreground android-6.0-marshmallow android-7.0-nougat
我正在生成视图的位图,以将其显示为地图上的标记.它工作正常,但我面临的问题是视图的高度没有显示.
private Bitmap getMarkerBitmapFromView(View view) {
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
//view.buildDrawingCache();
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Bitmap returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
/*canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN);
Drawable drawable = view.getBackground();
if (drawable != null)
drawable.draw(canvas);
*/
view.draw(canvas);
return returnedBitmap;
}
Run Code Online (Sandbox Code Playgroud) android bitmap google-maps-markers android-canvas android-elevation
我正在使用 Horizontal ViewPager2,里面有 4 个片段。每个片段在 RecyclerView 上都有 SwipeRefreshLayout。我面临的问题是,当 RecyclerView 处于顶部位置时,任何项目上的 onClick 列表都不起作用。如果我向下滚动 RecyclerView,则 onClick 工作正常。当 RecyclerView 处于顶部位置时,如果 SwipeRefreshLayout 处于刷新状态,则 onClick 工作正常。似乎 SwipeRefreshLayout 在触摸事件中与 ViewPager2 发生冲突。它适用于简单的 ViewPager。实际问题可能是什么,我们如何处理?任何想法都是可观的。
谢谢
xml:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fragment_home"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<include
android:id="@+id/headerPanel"
layout="@layout/home_header"
app:viewModel="@{viewModel}" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:paddingStart="@dimen/home_post_side_spacing"
android:paddingEnd="@dimen/home_post_side_spacing"
app:colorScheme="@{@color/fayvo_color}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/headerPanel"
app:onRefreshListener="@{() -> viewModel.manualRefresh()}"
app:refreshing="@{viewModel.isRefreshing}"
android:background="#f0f0f0">
<RelativeLayout
android:id="@+id/rl_rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_homePosts"
adapter="@{viewModel.postObservableArrayList}"
addToTop="@{viewModel.addToTop}"
clearList="@{viewModel.clearList}"
showLoader="@{viewModel.isPagingEnabled && viewModel.isLoading}"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<FrameLayout
android:id="@+id/emptyFrameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="@{viewModel.showEmptyLayout?View.VISIBLE:View.GONE}" />
<include
android:id="@+id/postUploadProgressLayout"
layout="@layout/item_post_upload_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:viewModel="@{viewModel}" …Run Code Online (Sandbox Code Playgroud) android android-viewpager swiperefreshlayout android-recyclerview android-viewpager2
我正在使用以下数据来解码 UTF-8 编码的字符串。
实际字符串:?????“?”?? ???????????????20160430?T
UTF-8 编码:ç§|ä¸ä¿ï¼ç¨âå¿âå·¥ä½ æ¾å°å±äºèªå·±çæå°±æãå¼è®²å¦ 20160430ã"
. 输出与输入相同。问题是什么?
方法:
public String decodeString(String encodedString) {
return new String(encodedString.getBytes(), "UTF-8");
}
Run Code Online (Sandbox Code Playgroud) 我正在使用WorkManager将数据从本地Room数据库同步到服务器。问题是Room给Loop.MainLooper()中的数据库生成错误,当我按照以下方式使用它时,它工作正常。但是我无法根据任务完成情况在SUCCESS或RETRY上返回“ WorkerResult”。Netwrok丢失时如何停止工作?
public class TestSyncManager extends Worker {
private final WorkerResult[] workerResult = {WorkerResult.SUCCESS};
// @Inject // Dagger2 has not added the support for dependency injection in worker yet.
private ApiHeader mApiHeader;
private HandlerThread mHandlerThread;
private Handler mHandler;
private Runnable mRunnable;
private DataManager dataManager;
@NonNull
@Override
public WorkerResult doWork() {
try {
//Looper.prepare();
CommonUtils.Log("usm_work_manager_1", "Work is Started.");
try {
checkNextCall();
} catch (Exception e) {
e.printStackTrace();
setWorkerResult(WorkerResult.FAILURE);
}
};
//mHandler = new Handler(Looper.myLooper());
mHandlerThread = new HandlerThread("LikesHandlerThread");
mHandlerThread.start();
Looper looper …Run Code Online (Sandbox Code Playgroud) 我想在上传之前对媒体文件进行一些编辑,为此我使用了 FFMPEG 库。但是当 FFMPEG 执行带有回调的命令时。因此,即使在 ffmpeg 命令完成之前,WorkManager 也会返回成功。我怎样才能避免它并保持 WorkManager 直到工作完成。我也使用 CountLatch 来添加等待,但是 ffmpeg 不起作用开始工作并且 WorkManager 仍然卡住。任何想法都会受到重视。谢谢
我有一个 RecyclerView,其中有 3 种不同的 ViewType。如果我滚动列表,那么对于最初的几个项目,它会在滚动过程中显示抽搐/颤抖。当 RecycledViewPool 填充到最大限制时,由于视图被重用,因此滚动变得平滑。所以,我正在考虑预先准备好 RecycledViewPool。我尝试创建一些视图持有者并在用户开始滚动之前添加到池中。但池显示手动插入视图的计数为 0。当 RecyclerView 本身在滚动时将视图添加到池中时,它会显示正确的计数。我正在使用以下方法来实现此目的。这是个好主意吗?或者有一些更准确的解决方案?
private void addDummyRecycledViews() {
int size = demoAdaptor.getList().size() > 7 ? 7 : demoAdaptor.getList().size();
RecyclerView.RecycledViewPool recycledViewPool = recyclerView.getRecycledViewPool();
for (int i = 0; i < size; i++) {
BaseViewHolder viewHolder = null;
int viewType = demoAdaptor.getItemViewType(i);
int recycledViewCount = recycledViewPool.getRecycledViewCount(viewType);
AppLogger.d("usm_test_adapter_dummy", "viewType= "+viewType+" ,recycledViewCount= "+recycledViewCount);
switch (viewType) {
case VIEW_TYPE_SIMPLE:
AppLogger.d("usm_test_adapter_dummy", "generate VIEW_TYPE_SIMPLE");
viewHolder = demoAdaptor.createSimpleItemViewHolder(recyclerView);
break;
case VIEW_TYPE_SEARCH:
AppLogger.d("usm_test_adapter_dummy", "generate VIEW_TYPE_SEARCH");
viewHolder = demoAdaptor.createSearchItemViewHolder(recyclerView);
break;
case VIEW_TYPE_VIDEO:
AppLogger.d("usm_test_adapter_dummy", …Run Code Online (Sandbox Code Playgroud) 我正在研究 MVVM 架构,并使用 Dagger2 进行数据注入。我面临的问题是,在 Activity/Fragments 中,@Inject 工作正常,但在 WorkManager 的 Worker 类中,@Inject 在运行时给出空指针异常。我该如何解决它?
以下是Worker类代码:
public class MySyncManager extends Worker {
@Inject
DataManager dataManager;
@Inject
SchedulerProvider schedulerProvider;
@NonNull
@Override
public WorkerResult doWork() {
CommonUtils.Log("usm_work_manager_1", "Work is Started.");
if(dataManager==null)
CommonUtils.Log("usm_work_manager", "Injector is NULL");
}
}
Run Code Online (Sandbox Code Playgroud)
方法:
private void startTestSyncRequest() {
Constraints myConstraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(MySyncManager.class)
.setConstraints(myConstraints)
.setInitialDelay(1, TimeUnit.SECONDS) // wait for n seconds before starting service
.build();
WorkManager.getInstance()
.beginUniqueWork(Tags.TEST_WORK_NAME, ExistingWorkPolicy.REPLACE, workRequest)
.enqueue();
}
Run Code Online (Sandbox Code Playgroud) 我想针对表中的项目/行列表更新特定列。一种方法是对update方法应用循环,但是有什么方法可以传递项目列表并为所有列更新该列,而不是循环进行?
道方法:
@Query("UPDATE items SET is_processing=1 WHERE item_id=:id")
public abstract void updateProcessingStatus(String id);
Run Code Online (Sandbox Code Playgroud)
当前更新代码:
public void updateStatusOfList(List<Item> items)
{
for(Item item:items)
myDao.updateProcessingStatus(item);
}
Run Code Online (Sandbox Code Playgroud) android ×9
android-room ×1
bitmap ×1
dagger-2 ×1
decoding ×1
encoding ×1
ffmpeg ×1
foreground ×1
performance ×1
sqlite ×1
utf-8 ×1