小编Usm*_*ana的帖子

在Android Nougat 7. +版本中检测当前正在运行的应用程序

Android团队不时改变他们的方法来获取当前正在运行的应用程序.我能够将当前正在运行的应用程序升级到Marshmallow 6.0版本,但我想问一下如何在Nougat 7.0版本中获取这些应用程序?反正有吗?请指导解决方案.我经常搜索,但可以找到任何合适的方法.

谢谢

android foreground android-6.0-marshmallow android-7.0-nougat

7
推荐指数
1
解决办法
7226
查看次数

在Android高程/阴影中,在生成视图的位图时不显示

我正在生成视图的位图,以将其显示为地图上的标记.它工作正常,但我面临的问题是视图的高度没有显示.

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

6
推荐指数
1
解决办法
988
查看次数

ViewPager2 与 SwipeRefreshLayout 冲突

我正在使用 Horizo​​ntal 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 &amp;&amp; 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

6
推荐指数
1
解决办法
1273
查看次数

在 Android 中,如何解码 UTF-8 编码的字符串?

我正在使用以下数据来解码 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)

encoding android utf-8 decoding

5
推荐指数
1
解决办法
1万
查看次数

处理WorkManager对网络连接失败的响应

我正在使用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)

android android-looper android-workmanager

5
推荐指数
1
解决办法
1643
查看次数

WorkManager 在异步方法完成之前返回结果

我想在上传之前对媒体文件进行一些编辑,为此我使用了 FFMPEG 库。但是当 FFMPEG 执行带有回调的命令时。因此,即使在 ffmpeg 命令完成之前,WorkManager 也会返回成功。我怎样才能避免它并保持 WorkManager 直到工作完成。我也使用 CountLatch 来添加等待,但是 ffmpeg 不起作用开始工作并且 WorkManager 仍然卡住。任何想法都会受到重视。谢谢

android ffmpeg android-fragments android-workmanager

5
推荐指数
1
解决办法
2382
查看次数

如何预先准备好 RecyclerView 的 RecycledViewPool 以避免滚动时出现初始抖动?

我有一个 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)

performance android android-recyclerview

5
推荐指数
1
解决办法
801
查看次数

无法在 WorkManager 的 Worker 类中注入单例类

我正在研究 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)

android dependency-injection dagger-2 android-workmanager

3
推荐指数
1
解决办法
3751
查看次数

更新一列房间中的项目列表

我想针对表中的项目/行列表更新特定列。一种方法是对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)

sqlite android android-room

1
推荐指数
1
解决办法
2275
查看次数