我想从onCreate方法内部完成一个活动.当我打电话时finish(),onDestroy()没有立即调用,代码不断流过finish().onDestroy()直到onCreate()结束括号后才调用.
根据onCreate()developer.android.com/reference上的说明.
您可以在此函数中调用finish(),在这种情况下,将立即调用onDestroy(),而不执行任何其余的活动生命周期(onStart(),onResume(),onPause()等).
我问的原因是:我想检查传递给Bundle的数据onCreate().当然我可以控制传递的内容onCreate,但我仍然认为应该在交付时进行检查.
我的代码包含class A,它启动Activity B.我认为不应该调用最后两个"if of clause子句"标签,因为语句中的finish方法if应该销毁了活动.它与if子句无关,因为第二次finish()调用后的标记行仍然被读取.
我的代码:
A级
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// goToBButton: when pressed sends message to class B.
Button goToBButton = (Button)this.findViewById(R.id.go_to__b_btn);
goToBButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick (View v) {
Log.i(TAG,"A Class: goToBButton, onClick");
Intent i = new Intent(A.this, B.class);
startActivityForResult(i,REQ_TO_B);
} …Run Code Online (Sandbox Code Playgroud) 我正在开发Android应用程序,使用AndroidStudio,我希望有人可以告诉我为什么我不能让Mockito使用argumentCaptor.capture()或识别参数anyObject().
我正在测试SpanPainter的方法applyColor():
package com.olfybsppa.inglesaventurero.utils;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
public class SpanPainter {
ForegroundColorSpan color;
public SpanPainter (ForegroundColorSpan color) {
this.color = color;
}
public SpannableString applyColor(SpannableString span) {
span.setSpan(color, 1, 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return span;
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试是:
package com.olfybsppa.inglesaventurero.utils;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class SpanPainterTest {
@Test
public void testAppliesColorPerRange () {
SpannableString mockSpanString = mock(SpannableString.class); …Run Code Online (Sandbox Code Playgroud) 从Android的Testing Fundamentals,"你可以使用普通的JUnit来测试一个不调用Android API的类,或者测试Android的JUnit扩展来测试Android组件." 我相信这就是为什么以下测试中的spanString为null.有人可以证实这是原因吗?
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class SpanPainterTest {
@Test
public void appliesColorPerRange () {
SpannablesString spanString = new SpannableString("Aa Bb");
SpanPainter painter = new SpanPainter(new ForegroundColorSpan(10));
SpannableString coloredSpan =
painter.applyColor(spanString, new Pair<Integer, Integer>(0,1));
ForegroundColorSpan[] colorArr =
coloredSpan.getSpans(0,0, ForegroundColorSpan.class);
assertEquals(10, colorArr[0]);
}
}
Run Code Online (Sandbox Code Playgroud)
这是SpanPainter.java
public class SpanPainter {
ForegroundColorSpan color;
public SpanPainter (ForegroundColorSpan color) {
this.color = color;
}
public SpannableString applyColor(SpannableString span,
Pair<Integer, Integer> pair) {
span.setSpan(color,pair.first, pair.second, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
return span;
}
}
Run Code Online (Sandbox Code Playgroud)
但是它说"使用Android的JUnit扩展来测试android组件.所以我扩展了AndroidTestCase,但是spanString仍然等于null.这让我觉得没有单元测试可以使用android api对象而不设置为null.是吗?(这是我的第二个问题.)这是作为AndroidTestCase的SpanPainter测试,导致spanString …
我的服务人员没有缓存我的静态资产。
在线使用Chrome DevTools时,ServiceWorker似乎正在运行。我看到styles.xxx.css,runtime.xxx.js,polyfills.xxx.js和main.xxx.js的行,其大小列为“来自Service Worker”。然后,在以后的行中,这些相同的文件以“来自磁盘缓存”的大小列出。
在“ Chrome DevTools应用程序”选项卡的“缓存存储”部分下,我具有以下行:
ngsw:db:control- http ://127.0.0.1: 8080
ngsw:xxx:资产:app:缓存-http://127.0.0.1: 8080
ngsw:xxx:assets:app:meta- http : //127.0.0.1 : 8080
单击最后两行不会在DevTools的“路径”部分中显示任何内容。
ngws-worker.js的状态为“已激活,正在运行”。它是“ Received 12/31/1969”,很奇怪。
然后,当我离线时,没有显示服务人员。缓存存储为空。最后一个网络行显示ngsw.json?ngsw-cache-bust = xxx状态(失败)键入fetch Initiator ngsw-worker.js:2662。
我的package.json脚本是(我从AngularFirebasePro复制的)
"webpack:prerender": "webpack --config webpack.prerender.config.js",
"build:prerender": "node dist/abogado/prerender.js",
"serve:prerender": "http-server dist/abogado -o",
"build:all": "ng build --prod && ng run abogado:server && npm run
webpack:prerender && npm run build:prerender"
Run Code Online (Sandbox Code Playgroud)
在angular.json我有
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/abogado-server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json"
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": …Run Code Online (Sandbox Code Playgroud) 我有这项测试的时间大约是一半。
@Test
public void thirdSwipe() {
onView(withId(R.id.pager)).perform(swipeLeft());
onView(withId(R.id.pager)).perform(swipeLeft());
onView(withId(R.id.pager)).perform(swipeLeft());
onView(allOf(withId(R.id.hint_english_text), withText("dog 0a"))).check(matches(isDisplayed()));
}
Run Code Online (Sandbox Code Playgroud)
我得到这个失败:
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'is displayed on the screen to the user' doesn't match the selected view.
Expected: is displayed on the screen to the user
Got: "TextView{id=2131427358, res-name=hint_english_text, visibility=VISIBLE, width=624, height=62, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=20.0, y=20.0, text=dog 0a, input-type=0, ime-target=false, has-links=false}"
Run Code Online (Sandbox Code Playgroud)
因此,看起来好像找到了TextViewwith "dog 0a",但无法识别它。我看了其他问题,并用设置了文本String,这只是我课堂上的几行:
private String englishText;
englishTextView.setText(englishText);
Run Code Online (Sandbox Code Playgroud)
另外,我正在使用allOf()。任何帮助,将不胜感激。该视图位于ViewPager的视图内,因此我不确定测试是否在ViewPagerid …
在活动生命周期图中,有一个从“onStop”到“应用程序进程已终止”到“onCreate”的箭头。一直想知道,现在我要对片段做一个小讨论;如果整个应用程序进程被销毁,onCreate 如何从 onStop 接收包?系统是否会跟踪被杀死的应用程序及其活动包?我认为这就是它的方式,因为那时被终止的应用程序将分配给它的内存为零。
此外,从页面管理活动生命周期>启动活动的最后一段,“系统在所有情况下调用 onPause() 和 onStop() 之后调用 onDestroy(),除了一种情况:...'情况并未说明为内存不足。这让我认为箭头不应该从 onStop 转到 onCreate 因为“具有更高优先级的应用程序需要内存”。这是一个错字还是我读错了?我想我'因为'Killable'而读错了吗?'一般而言,活动生命周期的运动如下所示:'图表。
其中之一必须是活动生命周期图表中的箭头或“系统在它已经调用 onPause() 和 onStop() 之后调用 onDestroy() 之后在所有情况下除了一种:...”语句错误。希望我是在断章取意的情况下阅读的。
在Angular Universal中,我有一个index.html文件。在顶部
<html lang="en">
Run Code Online (Sandbox Code Playgroud)
我想根据我所在的页面对此进行更改。maldonadoattorney.com/es/jailreleases将是
<html lang="es">
Run Code Online (Sandbox Code Playgroud)
maldonadoattorney.com/jailreleases将是
<html lang="en">
Run Code Online (Sandbox Code Playgroud)
有接受的方式吗?阅读了其他问题,不建议使用DOCUMENT,因此请谨慎使用。
我的网站地图设置了hreflang标记,但希望html lang标记正确。目前,我正在从index.html中删除lang =“ en”标签。
https://en.cppreference.com/w/cpp/thread/future/wait_until有一个在线程上调用 detach 的示例。为什么使用detach()?不会导致线程内存泄漏吗?cppreference 使用不好的技术似乎很奇怪。这是代码:
#include <iostream>
#include <future>
#include <thread>
#include <chrono>
int main()
{
std::chrono::system_clock::time_point two_seconds_passed
= std::chrono::system_clock::now() + std::chrono::seconds(2);
// Make a future that takes 1 second to complete
std::promise<int> p1;
std::future<int> f_completes = p1.get_future();
std::thread([](std::promise<int> p1)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
p1.set_value_at_thread_exit(9);
},
std::move(p1)
).detach();
// Make a future that takes 5 seconds to complete
std::promise<int> p2;
std::future<int> f_times_out = p2.get_future();
std::thread([](std::promise<int> p2)
{
std::this_thread::sleep_for(std::chrono::seconds(5));
p2.set_value_at_thread_exit(8);
},
std::move(p2)
).detach();
std::cout << "Waiting for 2 seconds..." << std::endl;
if(std::future_status::ready == …Run Code Online (Sandbox Code Playgroud) I believe "==" is for reference comparison (address comparison). So, I believe this should print out false, but I have an error, Incomparable types: java.lang.Integer and java.lang.Double. When comparing addresses, why would type matter? It's not the same address, so print false. Again, I'm just looking for the documentation. It's a hypothetical question.
Integer seven = 7;
Double sevenPointTwo = 7.2;
System.out.println("seven == sevenPointTwo is " + (seven == sevenPointTwo) );
Run Code Online (Sandbox Code Playgroud)