小编flo*_*cca的帖子

完成后继续onCreate流程()

我想从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 oncreate

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

为什么ArgumentCaptor没有正确匹配?

我正在开发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)

java android mockito

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

Android JUnit测试无法调用任何android api?

从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 …

junit android unit-testing

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

离线提供静态资产,在Angular Univeral中缓存策略

我的服务人员没有缓存我的静态资产。

在线使用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)

caching angular-universal angular

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

Android Espresso片状withId withText测试

我有这项测试的时间大约是一半。

  @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 …

android android-espresso

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

如果 App 进程被杀死,bundle 如何发送到 onCreate?

在活动生命周期图中,有一个从“onStop”到“应用程序进程已终止”到“onCreate”的箭头。一直想知道,现在我要对片段做一个小讨论;如果整个应用程序进程被销毁,onCreate 如何从 onStop 接收包?系统是否会跟踪被杀死的应用程序及其活动包?我认为这就是它的方式,因为那时被终止的应用程序将分配给它的内存为零。

此外,从页面管理活动生命周期>启动活动的最后一段,“系统在所有情况下调用 onPause() 和 onStop() 之后调用 onDestroy(),除了一种情况:...'情况并未说明为内存不足。这让我认为箭头不应该从 onStop 转到 onCreate 因为“具有更高优先级的应用程序需要内存”。这是一个错字还是我读错了?我想我'因为'Killable'而读错了吗?'一般而言,活动生命周期的运动如下所示:'图表。

其中之一必须是活动生命周期图表中的箭头或“系统在它已经调用 onPause() 和 onStop() 之后调用 onDestroy() 之后在所有情况下除了一种:...”语句错误。希望我是在断章取意的情况下阅读的。

android activity-lifecycle

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

Angular Universal HTML lang标记

在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”标签。

universal lang angular

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

为什么这个 future.wait_until 示例有 thread.detach() ?detach 不会导致内存泄漏吗?

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)

c++ multithreading

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

Where can I find the Java documentation for "==" equals operand?

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)

java

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