小编Mas*_*imo的帖子

为什么在 Android 绑定示例中 Google 使用 val 绑定和 var _binding?

示例如下

private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = ResultProfileBinding.inflate(inflater, container, false)
    val view = binding.root
    return view
}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}
Run Code Online (Sandbox Code Playgroud)

为什么使用 avar _binding和 a val binding,它只是得到_binding,而不是使用 a lateinit var bindingonly ?这个选择背后有什么隐情吗?

事实上,在活动的示例中,他们实际上使用了lateinit …

android kotlin android-databinding

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

Kotlin的合成属性发生冲突

我是Kotlin的新手.在其他非常有趣的事情中,我发现Android扩展,根据文档,应该让我使用活动的视图,而不需要findViewById.

实际上,通过在我的导入中添加这一行,它可以很好地工作:

import kotlinx.android.synthetic.main.<layout>.*
Run Code Online (Sandbox Code Playgroud)

问题是当两个不同的布局包含具有相同id的窗口小部件(即合成属性的相同名称)时,
例如两个不同TextView的带有id的s txtTitle.假设第一个是活动,第二个属于适配器内部使用的布局.

当我尝试在第一个TextView(活动的一个)上调用一个方法时,我看不到预期的结果,就像调用将在另一个视图上完成一样.作为对此的确认,当我打电话时txtTitle.parent,我看到了另一方的父母和兄弟姐妹txtTitle而不是预期的兄弟姐妹.

难道我做错了什么?我发现绕过这个问题的唯一方法是在我的所有布局中使用不同的名称或继续使用findViewById,但浪费这种语言功能会很遗憾......

android kotlin kotlin-android-extensions

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

ExoPlayer,如何加载远程音频文件的更大部分

我正在使用ExoPlayer 2播放远程曲目.默认情况下,播放器逐个加载曲目(即大约20秒,然后在曲目播放时另外20秒).

由于曲目是从远程服务器加载的,因此如果连接断开,播放器将无法再加载.有没有办法说ExoPlayer加载音频文件的更大部分(也是一次完整的轨道)?

我想看看周围ExtractorMediaSource,DataSource.Factory以及DefaultExtractorsFactory但是我发现没有解决我的问题.

val audioSource = ExtractorMediaSource(
        Uri.parse(videoUrl),
        mDataSourceFactory,    // DataSource.Factory
        mExtractor,    // DefaultExtractorsFactory
        null,
        null
)

mExoPlayer.prepare(audioSource)
mExoPlayer.playWhenReady = true
Run Code Online (Sandbox Code Playgroud)

(它是Kotlin,但Java程序员似乎也可以理解)

android audio-streaming exoplayer

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

网络扩展权利,如何启用它?

我需要在应用程序中使用网络扩展功能,完全使用代理功能.该文档说:

除非您使用NEHotspotHelper类,否则您无需从Apple获取使用网络扩展类的权利.但是,您仍需要通过Developer门户启用Network Extension权利.要请求使用NEHotspotHelper类的权利,请访问https://developer.apple.com/contact/network-extension.

我转到开发人员门户网站,但我找不到如何启用网络扩展权利.是因为我的角色是"管理员"而不是"团队代理"?或者有人可以告诉我如何启用该权利?

entitlements ios

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

ExoPlayer,概括 SimpleCache 行为

我正在使用 ExoPlayer 2 从网络播放音乐。现在我想使用美丽的SimpleCache类来缓存下载的音乐。我的问题如下:每次我请求播放歌曲时,服务器都会向我返回一个不同的 URL(也用于同一首歌曲),该 URL 用作SimpleCache. 因此,SimpleCache为每个 URL 创建一个新的缓存文件(即对于同一首歌曲也创建一个不同的文件)。

如果有办法问我为特定 url 生成的缓存文件的键是什么,那就太好了。你知道一种方法吗?

SimpleCache班是final的,所以我不能重写它的方法。


编辑,一个粗略的解决方案:
我创建了一个副本CacheDataSource并更改了方法中的这一行open(DataSpec),它负责密钥的生成:

key = dataSpec.key != null ? dataSpec.key : uri.toString();
Run Code Online (Sandbox Code Playgroud)

由于 someuri的参数,我可以生成相同的密钥,这些参数对于为同一首歌曲检索的每个 url 都是相等的。这个解决方案解决了我的问题,但对于每种可能的情况都不是那么通用和可利用的。

CacheDataSource已经然后用作解释此评论

private DataSource.Factory buildDataSourceFactory(final boolean useBandwidthMeter) {
    return new DataSource.Factory() {
        @Override
        public DataSource createDataSource() {
            LeastRecentlyUsedCacheEvictor evictor = new LeastRecentlyUsedCacheEvictor(100 * 1024 * 1024);
            SimpleCache simpleCache = new SimpleCache(new File(getCacheDir(), …
Run Code Online (Sandbox Code Playgroud)

android exoplayer

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

Android RAM页面大小?

我想优化InputStream的读取,然后我认为有一个RAM页面大小的byte []缓冲区会很好.

是否有方法(可能是静态方法)来了解它的大小?

编辑:

最后我成功使用了NDK和JNI,我在C中编写了以下代码:

#include <jni.h>
#include <unistd.h>

jlong Java_it_masmil_tests_TestsActivity_pageSize(JNIEnv* env, jobject javaThis) {
    return sysconf(_SC_PAGE_SIZE);
}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • it.masmil.tests是包名
  • TestsActivity是类名
  • pageSize是方法名称
  • env和java这是两个必需参数(在某些情况下有用)

我用NDK编译了该文件,然后用Java编写了以下代码:

static {
    System.loadLibrary("clibrary");
}
private native long pageSize();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    long page = pageSize();
}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • clibrary是我用NDK创建的库的名称
  • pageSize是C文件中声明的方法的名称

java linux android

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

RelativeLayout,对齐另一个视图底部的视图,但始终低于另一个视图

基于下图,我对布局问题很生气 布局问题

该图像代表RelativeLayout.我需要将蓝色视图与黑色视图的底部对齐.但是,如果黑色视图比红色视图和蓝色视图的总和短,我需要蓝色视图低于红色视图.我希望得到这样的结果:

正确的结果

我尝试使用以下xml:

<RelativeLayout
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <View
        android:id="@+id/blackView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:align_parentTop="true"
        android:align_parentLeft="true"/>
    <View
        android:id="@+id/redView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:align_parentTop="true"
        android:align_parentRight="true"
        android:layout_toRightOf="@+id/blackView"/>
    <View
        android:id="@+id/blueView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/blackView"
        android:layout_below="@+id/redView"
        android:layout_alignParentRight="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

但似乎layout_alignBottom的优先级高于layout_below.我还尝试将blueView设置为与其父级的底部对齐,但结果是父级(具有wrap_content高度)变为高级作为其自己的父级(整个屏幕高度).

有没有人有同样的问题?

android relativelayout

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

如何从Fragment Android中禁用或隐藏抽屉布局

我的应用程序中有10个不同的片段.我需要在几个片段中隐藏导航抽屉(抽屉布局),如何从片段中访问抽屉布局并隐藏它?我知道我们需要在活动中使用mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);但是如何在片段中使用它?

android

3
推荐指数
2
解决办法
5761
查看次数

防止webview加载某些URL

我创建了一个主机网站的Android应用程序,该网站已经加载了一些外部链接"URL".

所以我需要/res/raw/在webview中加载来阻止存储在文件中的一些URL .

我尝试覆盖,shouldInterceptRequest(WebView view, String url)但我不知道如何使用它.

java android webview

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

"mnt/sdcard"始终是Android中的外部存储吗?

在我所有的设备中,SD卡一直安装在路径上/mnt/sdcard(该值也由函数返回Environment.getExternalStorageDirectory().getAbsolutePath())

我可以将其视为常数,还是存在不同的情况?

memory android external sd-card

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