- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几天前,我的应用程序在多个设备上停止运行。该代码至少一年没有被触及(即:最近没有进行任何更改)。它从 SplashScreenActivity 开始,从 SQL 数据库下载一些数据,效果很好。之后,这些数据被 putExtra
到用于启动 MainActivity 的 Intent - 这就是应用程序突然关闭的地方。通过调试,我知道 Intent 仍然被正确创建,但在 MainActivity 中“onCreate
”未被调用。我不知道中间是什么以及为什么它停止工作,也许与依赖性有关?有什么想法吗?
下面是 SplashScreen 的代码和 MainActivity 的 onCreate 方法,以及 build.gradle
(应用程序),我在其中做了一些更改试图解决问题(已弃用的编译更改为实现和依赖项的版本和 sdkVersion )。这并没有解决问题。
构建.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.myname.myapp"
minSdkVersion 19
targetSdkVersion 26
versionCode 14
versionName "1.51"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility = 1.8
sourceCompatibility = 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.google.android.gms:play-services:12.0.1'
testImplementation 'junit:junit:4.12'
}
启动画面 Activity :
package com.myname.myapp;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class SplashScreen extends Activity {
private String mAccessCode; // --> DatabaseID
public String getmAccessCode() {
return mAccessCode;
}
public void setmAccessCode(String mAccessCode) {
this.mAccessCode = mAccessCode;
}
private String getPrefsString(String prefName) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
return sharedPreferences.getString(prefName, getString(R.string.default_access_code));
}
public boolean isOnline() {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected());
}
ArrayList<String> strResult = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
TextView textViewVersionName = findViewById(R.id.textViewVersionName);
textViewVersionName.setText("Version " + BuildConfig.VERSION_NAME);
setmAccessCode(getPrefsString("AccessCode"));
if (isOnline()) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_users), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDate), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDriverID), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_passengersByDate), "0", getString(R.string.url_receive), getmAccessCode()));
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.putStringArrayListExtra("tableContents", strResult);
startActivity(i);
finish();
}
}, 1500);
} else {
Toast toast = Toast.makeText(getApplicationContext(), R.string.connection_error, Toast.LENGTH_LONG);
toast.show();
finish();
}
}
}
主要 Activity :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = getIntent();
ArrayList<String> tableContents = i.getStringArrayListExtra("tableContents");
initActivity(tableContents);
}
如果还有什么需要补充的,欢迎留言。感谢您的帮助!
编辑:这是日志
2019-09-17 10:25:35.127 13305-13305/? I/name.myap: Not late-enabling -Xcheck:jni (already on)
2019-09-17 10:25:35.151 13305-13305/? E/name.myap: Unknown bits set in runtime_flags: 0x8000
2019-09-17 10:25:35.153 13305-13305/? W/name.myap: Unexpected CPU variant for X86 using defaults: x86
2019-09-17 10:25:35.230 13305-13305/? I/name.myap: The ClassLoaderContext is a special shared library.
2019-09-17 10:25:36.608 13305-13305/com.myname.myapp I/MultiDex: VM with version 2.1.0 has multidex support
2019-09-17 10:25:36.608 13305-13305/com.myname.myapp I/MultiDex: Installing application
2019-09-17 10:25:36.608 13305-13305/com.myname.myapp I/MultiDex: VM has multidex support, MultiDex support library is disabled.
2019-09-17 10:25:36.626 13305-13305/com.myname.myapp I/FirebaseInitProvider: FirebaseApp initialization unsuccessful
2019-09-17 10:25:36.644 13305-13338/com.myname.myapp D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
2019-09-17 10:25:36.644 13305-13338/com.myname.myapp W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)
2019-09-17 10:25:36.634 13305-13305/com.myname.myapp W/RenderThread: type=1400 audit(0.0:70): avc: denied { write } for name="property_service" dev="tmpfs" ino=6782 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0
2019-09-17 10:25:36.703 13305-13338/com.myname.myapp D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
2019-09-17 10:25:36.710 13305-13338/com.myname.myapp D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
2019-09-17 10:25:36.719 13305-13338/com.myname.myapp D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
2019-09-17 10:25:36.803 13305-13341/com.myname.myapp D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2019-09-17 10:25:36.831 13305-13336/com.myname.myapp W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2019-09-17 10:25:36.862 13305-13336/com.myname.myapp D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
2019-09-17 10:25:36.862 13305-13336/com.myname.myapp D/EGL_emulation: eglCreateContext: 0xe5bf00a0: maj 2 min 0 rcv 2
2019-09-17 10:25:36.872 13305-13336/com.myname.myapp D/EGL_emulation: eglMakeCurrent: 0xe5bf00a0: ver 2 0 (tinfo 0xf0da9bd0)
2019-09-17 10:25:36.903 13305-13336/com.myname.myapp W/Gralloc3: mapper 3.x is not supported
2019-09-17 10:25:36.925 13305-13336/com.myname.myapp D/EGL_emulation: eglMakeCurrent: 0xe5bf00a0: ver 2 0 (tinfo 0xf0da9bd0)
2019-09-17 10:25:36.947 13305-13336/com.myname.myapp D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 1 0
编辑 2:现在有一条新的错误消息可能会有所帮助:
2019-09-17 13:28:13.400 1669-2304/? E/ActivityManager: Second failure launching com.myname.myapp/.MainActivity, giving up
android.os.TransactionTooLargeException: data parcel size 520984 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:748)
at android.app.IApplicationThread$Stub$Proxy.scheduleLaunchActivity(IApplicationThread.java:1230)
at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1467)
at com.android.server.am.ActivityStackSupervisor.attachApplicationLocked(ActivityStackSupervisor.java:972)
at com.android.server.am.ActivityManagerService.attachApplicationLocked(ActivityManagerService.java:6958)
at com.android.server.am.ActivityManagerService.attachApplication(ActivityManagerService.java:7025)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:291)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2935)
at android.os.Binder.execTransact(Binder.java:674)
2019-09-17 13:28:13.434 1669-1690/? E/ViewRootImpl[myapp]: Attempting to destroy the window while drawing!
window=android.view.ViewRootImpl@da270ff, title=Splash Screen com.myname.myapp
最佳答案
您尚未共享 Logcat 错误堆栈,这将有助于进一步了解该问题。但似乎您正在尝试从新线程而不是 UI 线程启动 Activity ,因此应用程序崩溃,只需移出可运行 run 方法内的代码,并且不要启动新线程。如果由于某种原因您希望代码异步运行,请通过处理程序运行您的 Runnable。下面是 fragment
if (isOnline()) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_users), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDate), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_ridesByDriverID), "0", getString(R.string.url_receive), getmAccessCode()));
strResult.add(new DataTransfer().receiveDataFromDatabase(getString(R.string.sql_id_passengersByDate), "0", getString(R.string.url_receive), getmAccessCode()));
Intent i = new Intent(SplashScreen.this, MainActivity.class);
i.putStringArrayListExtra("tableContents", strResult);
startActivity(i);
finish();
}
},1000);
}
关于java - 尽管没有对代码进行任何更改,但 MainActivity 不再从 startActivity(i) 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970078/
每当我运行命令以将 Virtualbox 驱动程序启动 Minishift 到操作系统主机时,它都需要一段疯狂的时间,而且它永远不会结束。有时我什至收到有关达到存储限制的错误消息。 不知道是不是描述h
您好,我正在使用 npm 运行一个基本的 React 项目,我正尝试在 docker 容器中启动它。但是我实际上无法让项目运行。我的 dockerfile 看起来像这样: FROM node:7.8.
所以我想从我的 SSH 终端开始游戏。 这真的很奇怪,当我直接从 Linux GUI 执行此操作时,它可以工作。但是当我使用 SSH 客户端进行远程连接时,它就崩溃了。似乎与我的显示驱动程序有关。 U
我有一个显示图像的动态壁纸。我在 Activity 中更改了该图像。然后我需要通知动态壁纸,以便它知道重新加载资源。 Intent 似乎是完美、简单的解决方案: Intent intent = new
我有一个似乎无法解决的问题。我在 Boot Dashboard 中使用 STS 3.9.2 从 Eclipse (Oxygen) 启动 Spring Boot 应用程序没有任何问题: 但是,当我尝试从
全新的 Python,在我开始摆弄东西之前先设置和安装东西。我的理解是 Python 2.7 和 Python 3.3 之间存在一些显着差异/不兼容,尽管这两个版本都得到了很好的使用,所以我认为最好安
在使用了很长时间的 jQuery 之后,我有一个问题,我正在使用 jQuery 模式(样式)编写一个简单的代码, (function(window, undefined) { var jQu
我正在尝试在 spring boot 应用程序下的非 spring 托管类中配置 Autowired。我在 tomcat 服务器下部署的 Web 应用程序下成功运行了这个。但是当我想在 spring
我对 xmonad 完全陌生,但我想开始使用它来提高我的工作效率。 这是我一直在使用的指南(我使用的是 Apple OS X Snow Leopard) http://xmonad.org/tour.
我试图将Spring Boot指南中的Managing Transactions示例扩展到两个数据源,但是@Transaction注释似乎仅对其中一个数据源有效。 在“Application.java
conEmu 有没有办法默认打开多个不同的选项卡? 我看到这个页面解释了如何使用 splits , 我意识到我可以按 Ctrl + T, 1, Enter,但我希望有一种方法可以自动执行此操作! "%
我正在寻找快速而肮脏的答案。我当时脑子一片空白,盯着屏幕看了 12 个小时以上,我想我中枪了。 我想做一个简单的 SignalR 应用程序作为教程。我找到了这个example ,但我不断收到票证未定义
我正在使用 Azure Powershell cmdlet 来启动/停止 VM。 Start-AzureVM [-ServiceName] [-Name] [ ] Stop-AzureVM [-S
我想使用Powershell脚本代码启动/停止iis和mssql 意味着当我运行ps脚本时,我想启动/停止iis和mssql 我在网上搜索了它,发现了一些代码,但按照我的要求无法正常工作 码: $ii
我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部
我想在已安装 Python 2.7 的 Windows XP 计算机上运行 IPython(版本 0.12)。 我通过 Windows 二进制安装程序安装,但安装后 IPython 没有显示在菜单中,
我从创建了自己的简单图片。 FROM python:2.7.11 RUN mkdir /extra/later/ \ && mkdir /yyy 现在,我可以执行以下步骤: docker run
$(document).ready(function () { setTimeout(function() { window.location.reload(); }, 2000); // 2
我刚刚创建了一个帐户 OpenWeatherMap 我想通过城市 ID API 调用获取当前位置的天气: http://api.openweathermap.org/data/2.5/weather?
我注意到,如果我更改 xcasset 中的图像,启动 Storyboard不会更新。 例如,假设您的启动 Storyboard中有一个 UIImage View ,其中包含一个名为“logo”的蓝色图
我是一名优秀的程序员,十分优秀!