我想在应用程序启动时从服务器下载某些文件。所以我尝试使用工作管理器,它从我的自定义应用程序类中排队。但是 Worker 类没有被触发,状态只是入队,不会进入运行状态.下面是我的代码:
应用类:
@Override
public void onCreate() {
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
//.setRequiresStorageNotLow(true)
//.setRequiresBatteryNotLow(true)
.build();
OneTimeWorkRequest request = new OneTimeWorkRequest
.Builder(MyWorker.class)
//.setConstraints(constraints)
//.setInitialDelay(1,TimeUnit.SECONDS)
.addTag("download")
.build();
WorkManager.getInstance(getApplicationContext()).getWorkInfoByIdLiveData(request.getId()).observeForever(new Observer<WorkInfo>() {
@Override
public void onChanged(WorkInfo workInfo) {
if (workInfo == null) {
Log.d("download", "workInfo == null");
} else {
Log.d("download", "workInfo != null: " + workInfo.getState().toString());//This is giving ENQUEUED once..thats it
}
}
});
WorkManager.getInstance(getApplicationContext()).enqueue(request);
}
Run Code Online (Sandbox Code Playgroud)
我的工人类
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull …Run Code Online (Sandbox Code Playgroud) 我使用带有动态芯片的芯片组。我希望芯片根据它们的文字被包裹在宽度上。但即使没有填充,它也需要额外的空间。
下面是我的代码:
xml:
<com.google.android.material.chip.ChipGroup
android:id="@+id/cg"
android:layout_width="0dp"
android:layout_weight="75"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="5dp"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="12sp"
app:singleSelection="false"
app:chipSpacingVertical="5dp"
app:chipSpacingHorizontal="5dp"
app:singleLine="false"
app:chipSpacing="2dp">
Run Code Online (Sandbox Code Playgroud)
这是如何动态添加筹码:
for(int i=0;i<cartoonTypes.length;i++){
chip = new Chip(this);
chip.setText(cartoonTypes[i].trim());
chip.setTextColor(Color.WHITE);
chip.setChipBackgroundColor(getResources().getColorStateList(R.color.colorChip));
chip.setTextSize(12);
chip.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
chip.setPadding(0,0,0,0);
cgMovieGenre.addView(chip);
ChipGroup.LayoutParams layoutParams = (ChipGroup.LayoutParams) chip.getLayoutParams();;
int dpSize = px2dp(12);;
layoutParams.height = dpSize;
layoutParams.width = ChipGroup.LayoutParams.WRAP_CONTENT;
chip.setLayoutParams(layoutParams);
}
Run Code Online (Sandbox Code Playgroud)
方法 px2dp 这样做:
int px2dp(int px){
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int h = (px * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT;
return h;
}
Run Code Online (Sandbox Code Playgroud)
我build.gradle有以下依赖项:
implementation fileTree(dir: 'libs', include: …Run Code Online (Sandbox Code Playgroud) android android-layout android-chips material-components material-components-android
我有一个简单LinearLayout的ImageView布局视图,法线视图的权重分别为0.55和0.45。
除非我给weightsum我的礼物,我不能分手LinearLayout。
有我的后LinearLayout裂开,我试图给一个背景色,以我的看法,但它不是反映。
下面是我的代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1"
>
<ImageView
android:layout_weight=".55"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="5dip"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_background"
android:contentDescription="TODO" />
<View
android:layout_weight=".45dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:visibility="visible"
android:background="@color/colorPrimary"
></View>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我不知道应该进行哪些更改,以便可以正确拆分视图并设置背景颜色。提前致谢!
android android-linearlayout android-background android-layout-weight