小编Max*_*lle的帖子

用于并行执行的 Flutter 多个异步方法

我仍然在为 async/await 模式而苦苦挣扎,所以我在这里问你一些精度。

我看到这个页面很好地解释了异步/等待模式。我在这里发布困扰我的例子:

import 'dart:async';

Future<String> firstAsync() async {
  await Future<String>.delayed(const Duration(seconds: 2));
  return "First!";
}

Future<String> secondAsync() async {
  await Future<String>.delayed(const Duration(seconds: 2));
  return "Second!";
}

Future<String> thirdAsync() async {
  await Future<String>.delayed(const Duration(seconds: 2));
  return "Third!";
}

void main() async {
  var f = await firstAsync();
  print(f);
  var s = await secondAsync();
  print(s);
  var t = await thirdAsync();
  print(t);
  print('done');
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,async一个接一个地调用每个方法,所以主函数的执行时间是 6 秒(3 x 2 秒)。但是,我不明白如果它们一个接一个地执行,异步函数有什么意义。

async功能不应该在后台执行?用并行async执行来固定流程难道不是多个功能的重点吗?

我想我在 flutter …

asynchronous async-await flutter

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

在 ViewModel 中加载已在 SplashActvity 中检索到的数据

我是 ViewModel 的新手,我知道它是一种与片段通信的强大而简单的方式。

我的问题如下: 如何加载在 mainActivity 的 ViewModel 中的 SplashActivity 中检索到的数据?

我的应用程序架构如下:

  1. SplashActivity:通过改造检索数据并将其存储到列表中
  2. 主要活动:包含两个以不同方式显示数据的片段

这是一段代码,显示了我的实现。

飞溅活动

public class SplashActivity extends AppCompatActivity {

    private final String TAG = "TAG.SplashActivity";
    public static List<Toilet> toiletList = new ArrayList<>(); // HERE IS THE DATA I WANT TO 
    RETRIEVE IN THE MAIN ACTIVITY

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /*Create handle for the RetrofitInstance interface*/
        GetDataService service = ...;
        // MY STUFF RETROFIT including
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        intent.putExtra("toiletList", (Serializable) toiletList);
        startActivity(intent); …
Run Code Online (Sandbox Code Playgroud)

android mvvm android-fragments android-activity android-viewmodel

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

GetMap()在Android上使用Google Maps API v2返回null

我在使用Google Maps API V2时遇到了一些问题.我已经尝试了很多教程并搜索了很多答案(包括堆栈溢出),但我找到的所有都没有用.我可以用xml标签绘制地图<fragment>.没问题,它有效.但是当我试图让地图MainActivity.java getMap()返回null时我不知道为什么.

MainActivity.java

package com.example.testmaps;

import android.app.Activity;
import android.os.Bundle;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends Activity {
 private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    //HERE mMap IS NULL
    mMap.addMarker(new MarkerOptions()
            .position(new LatLng(10, 10))
            .title("Hello world"));
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <fragment 
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>

</RelativeLayout> 
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testmaps"
    android:versionCode="1" …
Run Code Online (Sandbox Code Playgroud)

java xml api android google-maps

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

使用MPAndroidChart自定义XAxis标签

我是MPAndroidChart的新手,我想在LineChart的XAxis上实时显示时间.我想只显示传入数据的最后10秒,如下图所示.我的采样是25Hz所以我需要显示250个值才能有10秒的记录.

像这样的东西

但是,我真的不知道该怎么做.我想我必须使用IAxisValueFormatter.

目前,我的传入值被添加到数据集中,如下所示:

addEntry(myDataSet, new Entry(myDataSet.getEntryCount(), myNewValue));
Run Code Online (Sandbox Code Playgroud)

但也许我需要这样做:

/* add 40 ms on xAxis for each new value */
addEntry(myDataSet, new Entry(myLastTimeStamp + 40, myNewValue));
Run Code Online (Sandbox Code Playgroud)

然后创建一个格式化程序,将X值转换为"xxx秒"之类的字符串,并仅显示"0s","5s"和"10s".

我不知道它是否有效但是有更好的方法吗?

谢谢

android real-time linechart mpandroidchart

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