小编Fre*_*red的帖子

在 Android 的所有最新限制之后,如何设置要在确切时间安排的闹钟?

注意:我尝试了在 StackOverflow 上写的各种解决方案(这里的例子)。请不要在没有使用我在下面编写的测试中检查您发现的解决方案是否有效的情况下关闭它。

背景

对应用程序有一个要求,即用户将提醒设置为在特定时间安排,因此当应用程序在这个时间被触发时,它会在后台做一些微小的事情(只是一些数据库查询操作),并显示一个简单的通知,讲述提醒。

过去,我用一个简单的代码来设置一些在相对特定的时间被调度的东西:

            val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
            val pendingIntent = PendingIntent.getBroadcast(context, requestId, Intent(context, AlarmReceiver::class.java), PendingIntent.FLAG_UPDATE_CURRENT)
            when {
                VERSION.SDK_INT >= VERSION_CODES.KITKAT -> alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent)
                else -> alarmManager.set(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent)
            }
Run Code Online (Sandbox Code Playgroud)
class AlarmReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        Log.d("AppLog", "AlarmReceiver onReceive")
        //do something in the real app
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

            val timeToTrigger = System.currentTimeMillis() + java.util.concurrent.TimeUnit.MINUTES.toMillis(1)
            setAlarm(this, timeToTrigger, 1)
Run Code Online (Sandbox Code Playgroud)

问题

我现在已经在新 Android 版本和带有 Android 10 的 Pixel 4 上的模拟器上测试了此代码,它似乎没有触发,或者它可能在我提供它很长时间后触发。我深知的 …

android alarmmanager

35
推荐指数
2
解决办法
4661
查看次数

迁移到Androidx后更改语言环境不起作用

我有一个支持多种语言的旧项目。我想升级支持库和目标平台,在迁移到Androidx之前,一切正常,但现在更改语言无效!

我使用此代码更改App的默认语言环境

private static Context updateResources(Context context, String language)
{
    Locale locale = new Locale(language);
    Locale.setDefault(locale);

    Configuration configuration = context.getResources().getConfiguration();
    configuration.setLocale(locale);

    return context.createConfigurationContext(configuration);
}
Run Code Online (Sandbox Code Playgroud)

并在每个活动上通过attachBaseContext这样的覆盖调用此方法:

@Override
protected void attachBaseContext(Context newBase)
{
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    String language = preferences.getString(SELECTED_LANGUAGE, "fa");
    super.attachBaseContext(updateResources(newBase, language));
}
Run Code Online (Sandbox Code Playgroud)

我尝试其他方法来获取字符串,但我注意到了吗?getActivity().getBaseContext().getString工作,而getActivity().getString不是工作。即使以下代码也不起作用,并且始终app_name在默认资源string.xml中显示vlaue。

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name"/>
Run Code Online (Sandbox Code Playgroud)

我在https://github.com/Freydoonk/LanguageTest中共享示例代码

getActivity()..getResources().getIdentifier行不通,总是返回0!

android android-activity android-support-library androidx

21
推荐指数
7
解决办法
1900
查看次数

实体框架,自动应用迁移

我首先使用Entity Framework代码,并通过以下代码设置AutomaticMigrationsEnabled为true:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, MigrateDBConfiguration>());
//////////////////////////////////

public class MigrateDBConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<DbContext>
{
    public MigrateDBConfiguration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

在第一次运行项目时,它工作正常,并创建数据库和表.在我更改模型并删除一些字段或添加新字段并运行Add-Migration之后,生成了迁移类但在运行项目之后发生此异常:

EntityFramework.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:自创建数据库以来,支持"DBContext"上下文的模型已更改.

编辑:arturo menchaca的回答我改变可能代码如下:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBContext, MigrateDBConfiguration<DBContext>>());

...
Run Code Online (Sandbox Code Playgroud)

但例外情况是:

数据库中已经有一个名为"MyTable"的对象.

我想申请迁移.

c# entity-framework ef-code-first ef-migrations

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

更新参数后,Blazor 页面未重新呈现

我从新的ASP.NET 核心 Web 应用程序和 blazor 客户端模板 ( 3.0.0-preview4-19216-03) 开始。

要将状态添加到现有Counter.razor页面,我添加了以下类:

public class GlobalCounter
{
    private int _count;
    public int Count
    {
        get => _count;
        set
        {
            if (_count == value) return;

            _count = value;
            CounterChanged.Invoke(this, new CounterChangedEventArgs(_count));
        }
    }

    public GlobalCounter(int initialCount = 0)
    {
        _count = initialCount;
    }

    public event EventHandler<CounterChangedEventArgs> CounterChanged;
}

public class CounterChangedEventArgs : EventArgs
{
    public int Count { get; }
    public CounterChangedEventArgs(int count)
    {
        Count = count;
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# blazor

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

转换日期时间?串起来

我想将 a 转换DateTime?为字符串。如果日期为null,则返回"",否则返回一个像这样的字符串格式:"2020-03-05T07:52:59.665Z"。代码是这样的,但它不起作用。它"DateTime?"说不包含“ToUniversalTime”的定义。有人知道如何解决这个问题吗?

DateTime? date = DateTime.UtcNow;

var dateInUTCString = date == null ? "" : date.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
Run Code Online (Sandbox Code Playgroud)

c#

11
推荐指数
2
解决办法
2175
查看次数

是否可以将默认内容类型设置为“application/json;v=2.0”

是否可以将默认内容类型设置为“application/json;v=2.0”。我说默认是因为我使用的是 HttpClient 类,并且我使用 DefaultRequestHeaders 将我的代理设置为默认值。

我按照这个例子创建了我的标题/sf/answers/747553831/但我也使用了版本控制,关于版本控制的信息保存在 ContenT-Type 中

public class BankAccountProxy
{
    public void SetToken()
    {
        Client = new HttpClient();
        Client.BaseAddress = new Uri(System.Configuration.ConfigurationManager.AppSettings["ApiRoute"]);
        Client.DefaultRequestHeaders.Accept.Clear();
        Client.DefaultRequestHeaders.Add("Token", ApiInformations.ApiToken);
        Client.DefaultRequestHeaders
            .Accept
            .Add(new MediaTypeWithQualityHeaderValue($"application/json;v=2.0"));
    }

    public async Task<IEnumerable<BankAccount>> Get()
    {
        HttpResponseMessage response = await Client.GetAsync($"/api/BankAccount/");
        response.EnsureSuccessStatusCode();
        IEnumerable<BankAccount> bankAccount;
        bankAccount = await response.Content.ReadAsAsync<IEnumerable<BankAccount>>();
        return bankAccount;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到一个

异常消息:值 'application/json;v=2.0' 的格式无效。

因为 v=2.0 可能不是有效的 MediaTypeWithQualityHeaderValue。

我想要的是确保我总是在我的 Content-Type 标头值中发送版本信息。我该如何初始化它?如何告诉我的代码我的默认内容类型不是质量标头而是有效标头。

此处的信息是我在 Postman 上完美运行的查询:

在此处输入图片说明

c# rest http-headers asp.net-web-api2

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

HttpClient.GetStringAsync 未执行

代码在 .NET Standard 2.0 中运行。我有一个构造函数调用一个方法,该方法将调用这样的 Azure 函数:

public ChatViewModel(IChatService chatService)
{
    Task.Run(async () =>
    {
        if (!chatService.IsConnected)
        {
            await chatService.CreateConnection();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

方法是这样的:

public async Task CreateConnection()
{
   await semaphoreSlim.WaitAsync();

   if (httpClient == null)
   {
        httpClient = new HttpClient();
   }

   var result = await httpClient.GetStringAsync(uri);

   var info = JsonConvert.DeserializeObject<Models.ConnectionInfo>(result);

   //... some other code ...
   semaphoreSlim.Release();
}
Run Code Online (Sandbox Code Playgroud)

代码停在

等待 httpClient.GetStringAsync(uri)

URI 是 100% 有效的,如果我将它复制并粘贴到浏览器中,我会得到我想要的 JSON。

打开 Fiddler 时,没有调用 URI。

编辑 源代码来自这个 Github 存储库:https : //github.com/PacktPublishing/Xamarin.Forms-Projects/tree/master/Chapter06-07/Chat/Chat

奇怪的是,我似乎在 Azure 中接到了一个电话: 在此处输入图片说明

编辑 …

c# async-await dotnet-httpclient .net-standard-2.0

9
推荐指数
2
解决办法
1653
查看次数

在 React-pivottable 中渲染 jquery 数据表

我已经实现react-pivottable只是想知道有没有办法在 jQuery 数据表视图中显示整个数据集

即,我有几列想要在以下数据的表格视图中显示所有列

[
 'SRN', 'MainSystemType', 'MagnetType', 'MagnetCoverType', 'MagnetRMMUType',
 'MagnetHighOrderShimPowerSupply', 'GradientAmplifierType', 
 'GradientInterfaceType', 'GradientSwitchType', 'RFSystemB1FieldSystem', 
 'RFSystemFrontendInterface', 'CabinetsDasCabinet', 
 'ReconstructorAvailableMemory', 'ReconstructorNumberOfProcessors', 
 'AcquisitionSystemBulkBoardType', 'CabinetsCoolersCabinet', 
 'AcquisitionSystemType', 'PatientSupportPatientSupportType', 
 'PatientInterfaceMiscellaneousBoxType', 'PatientInterfacePPUType', 
 'PatientInterfaceType', 'PatientInterfaceAudioModule', 
 'PatientInterfaceAudioSwitchType', 'PatientSupportPowerSupplyUnit', 
 'RFAmpType', 'IOP_Firmware', 'RFP_Firmware'
],
[
 108, 'WA15', 'WA_15T', 'Wide Aperture', 'MEU', 'NONE', '781', 'IGCIDNA', 
 'NONE', 'HIGH', 'TFINT', 'DACC', 65536, 1, 'NONE', 'LCC2B', 'DDAS', 
 'IMT', 'AIBo', 'NONE', 'wBTU', 'AM3 With E-Stop', null, 'PSU2', 
 'S35_64', 'IOP.NA', 'RFP.NA'
],
[
 121, 'T15', 'F2000', 'Achieva', 'MEU', 'NONE', '781', 'IGCIDNA', 'NONE', 
 'HIGH', 'CFINT', 'DACC', …
Run Code Online (Sandbox Code Playgroud)

database datatable jquery pivot-table reactjs

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

在 vscode 中带有参数的 RUST 货物运行任务

有没有办法为作为 VS CODE 任务运行的 RUST 货物命令指定参数?或者我应该将其作为 NPM 脚本尝试?(当然,这是 RUST,所以我使用 CARGO 和 npm,创建 package.json 会很奇怪)。

构建任务工作正常:

"version": "2.0.0",
"tasks": [
    {
      "type": "cargo",
      "subcommand": "build",
      "problemMatcher": [
        "$rustc"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      }
},
Run Code Online (Sandbox Code Playgroud)

但我不知道把论点放在哪里,因为我希望它是

$cargo run [filename]

Run Code Online (Sandbox Code Playgroud)
{
  "type": "cargo",
  "subcommand": "run",
  "problemMatcher": [
    "$rustc"
   ]
}
Run Code Online (Sandbox Code Playgroud)

rust-cargo visual-studio-code

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

修改和操作 JavaScript 数组

这是我有的一个数组示例:

var array= ['business>management', 'News>Entertainment News', 'business>Entrepreneurship'];
Run Code Online (Sandbox Code Playgroud)

我想要这个结果:

['business', 'management', 'News', 'Entertainment News', 'Entrepreneurship']
Run Code Online (Sandbox Code Playgroud)

这意味着,与此 '>' 分开没有重复

这是我所在位置的一个示例,但它只是删除了箭头 '>' jsfiddle

javascript arrays

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