我仍然在为 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 …
我是 ViewModel 的新手,我知道它是一种与片段通信的强大而简单的方式。
我的问题如下: 如何加载在 mainActivity 的 ViewModel 中的 SplashActivity 中检索到的数据?
我的应用程序架构如下:
这是一段代码,显示了我的实现。
飞溅活动
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
我在使用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) 我是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 ×3
api ×1
async-await ×1
asynchronous ×1
flutter ×1
google-maps ×1
java ×1
linechart ×1
mvvm ×1
real-time ×1
xml ×1