我的android应用程序在强制关闭后重新启动,通过我的整个应用程序,包括20个活动,我依赖于在主要活动上创建的静态数据.因此,一旦应用程序崩溃,我的所有静态数据都会丢失,当应用程序自动重启时,它几乎没有任何基本数据可供操作.
我的问题是,在崩溃时我希望这件事发生
我知道当活动崩溃时,android系统会将堆栈中的下一个活动带到前台,这就是我的应用程序产生冗余结果的原因.我也经历了Android开发人员,但我唯一知道的是在Manifest中设置一个属性android:finishOnTaskLaunch="true".但不幸的是,这对我毫无帮助.我非常感谢你帮助解决这个问题,并让我知道原因和分析.
我有一个MainDrawer to Fragment活动,它有一个导航抽屉的布局我和我的主要内容,我可以在其中加载新的碎片.我加载的一个片段是calle StatisticsTab Fragment.这个Fragment包含一个tabhost,每个tab都是它自己的listview项的片段.一旦我点击ListView项目,它加载另一个新的片段,我不再在tabHost中,我尝试使用导航器返回到我的StatisticsTab片段,我收到此错误:
03-03 10:32:06.884 24185-24185/com.beerportfolio.beerportfoliopro E/AndroidRuntime? FATAL EXCEPTION: main
java.lang.IllegalStateException: Recursive entry to executePendingTransactions
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1439)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:283)
at android.view.View.dispatchAttachedToWindow(View.java:12307)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2464)
at android.view.ViewGroup.addViewInner(ViewGroup.java:3567)
at android.view.ViewGroup.addView(ViewGroup.java:3399)
at android.view.ViewGroup.addView(ViewGroup.java:3344)
at android.view.ViewGroup.addView(ViewGroup.java:3320)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5789)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
如果我没有在StatisticsTab片段上点击我的任何标签,并通过navdrawer导航到另一个片段,然后返回StatisticsTab,那么它就不会FC上.也就是说,当我回到它们时,NavDrawer中的其他任何片段都没有关闭,只有带有标签的片段.
MainDrawer2:
public class MainDrawer2 extends FragmentActivity
{
private static final String EXTRA_NAV_ITEM …Run Code Online (Sandbox Code Playgroud) 当我点击closeButton时,我想强制停止我的Android应用程序.这是我的代码.
protected void onCreate(Bundle savedInstanceState) {
this.setContentView(R.layout.layoutxml);
this.closeButton = (Button)this.findViewById(R.id.close);
this.closeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
Run Code Online (Sandbox Code Playgroud)
这完成了我的申请.如果我去Settings -> Applications -> Manage applications -> <my application name>,我可以看到'强制停止'按钮已启用.这是否意味着我的申请没有完全停止?
如何完全完成我的Android应用程序并禁用"设置"中的"强制停止"按钮?从我有限的经验,当一个"异常"(前.NullPointerException异常)的应用程序时,其异常停止,看起来完全完成,而"强制停止"按钮看起来禁用.
我已实现NSURLSession从我们的服务器下载相当大的文件.现在,只要我在前台或后台工作并返回应用程序,交易正在运行并完成.
但是,如果我使用多任务处理屏幕强制退出应用程序并再次重新打开应用程序.下载过程没有完成,虽然我从文档中了解到它应该,这里的文档说明:
如果iOS应用程序被系统终止并重新启动,则应用程序可以使用相同的标识符来创建新的配置对象和会话,并检索终止时正在进行的传输的状态.此行为仅适用于系统正常终止应用程序.如果用户从多任务屏幕终止应用程序,系统将取消所有会话的后台传输.此外,系统不会自动重新启动用户强制退出的应用程序.在再次开始传输之前,用户必须明确重新启动应用程序.
这意味着如果我再次启动应用程序,强制退出之前的事务应该再次启动,还是它们?我需要提交额外的操作才能使其正常工作吗?
更新:我偶然发现了这个项目:https: //github.com/Heikowi/HWIFileDownload#force-quit
这表明:
强行退出
应用程序被用户杀死后,下载不会在后台继续.在iOS 7(及更高版本)上,将传回恢复数据.
这意味着即使应用程序在后台被用户杀死,也有办法接收恢复数据.只有项目是用Objective-C编写的,我无法理解他们为实现这一目标所做的工作.
关于这个话题有很多问题,但没有明确的答案.虽然android的内存管理非常扎实,但很多人认为我们不应该杀掉android应用程序.我的情况不同.我想要一个关闭应用程序的选项.我找到了关闭应用程序的以下代码,但有时它不起作用.当我点击我的应用程序上的退出按钮时,似乎应用程序只是刷新自己.
MainActivity.java
@Override
public void onDestroy()
{
super.onDestroy();
/*
* Notify the system to finalize and collect all objects of the
* application on exit so that the process running the application can
* be killed by the system without causing issues. NOTE: If this is set
* to true then the process will not be killed until all of its threads
* have closed.
*/
System.runFinalizersOnExit(true);
/*
* Force the system to close the application down completely instead of …Run Code Online (Sandbox Code Playgroud) 我收到了以下错误,我的应用用户通过市场开发者控制台报告:
java.lang.RuntimeException: Failed to register input channel. Check logs for details.
at android.view.InputQueue.nativeRegisterInputChannel(Native Method)
at android.view.InputQueue.registerInputChannel(InputQueue.java:92)
at android.view.ViewRoot.setView(ViewRoot.java:568)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.view.Window$LocalWindowManager.addView(Window.java:465)
at android.app.Dialog.show(Dialog.java:241)
at my.program.MyActivity.handleFailure(Unknown Source)
at my.program.MyActivity$RunFailed.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
斜体线是我的代码的一部分.有问题的代码只是创建并显示一个对话框.它从一个Runnable发布到一个Handler.一切都应该在GUI线程中发生(这Handler就是使用的原因).
我不知道如何调试这个.我自己没有遇到过这个问题,而我所拥有的只是一堆自动报告.谷歌在这个确切的问题上显示了几个线程,但没有答案(除了暗示这是Android 2.3.3特定的问题).
我的appwidget崩溃并出现以下错误:
E/AndroidRuntime( 5572): FATAL EXCEPTION: main
E/AndroidRuntime( 5572): java.lang.RuntimeException: Unable to start receiver com.android.mlweatherwidget.WeatherWidgetLarge: java.lang.RuntimeException: system server dead?
E/AndroidRuntime( 5572): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805)
E/AndroidRuntime( 5572): at android.app.ActivityThread.access$2400(ActivityThread.java:117)
E/AndroidRuntime( 5572): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
E/AndroidRuntime( 5572): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 5572): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 5572): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( 5572): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 5572): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 5572): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 5572): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 5572): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 5572): Caused by: java.lang.RuntimeException: system server dead?
E/AndroidRuntime( 5572): at com.android.mlhome.appwidget.AppWidgetManager.getAppWidgetIds(AppWidgetManager.java:375)
E/AndroidRuntime( 5572): at com.android.mlweatherwidget.WeatherWidgetLarge.onReceive(WeatherWidgetLarge.java:202) …Run Code Online (Sandbox Code Playgroud) 我开发Android应用程序但在某些情况下我的应用程序 force close
如果force close在任何时候发生,我如何向开发者发送电子邮件包含详细信息?
我正在尝试使用MediaRecorder在我的一个活动中录制音频.部分代码如下所示.
File file = new File(AppConstants.MSGS_DIR, filename);
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(AudioSource.MIC);
recorder.setOutputFormat(OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AMR_WB);
recorder.setOutputFile(file.getAbsolutePath());
try {
recorder.prepare();
recorder.start();
} catch (IOException e) {
System.out.println("Exception: " + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我在清单文件中给出了以下权限.
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
但在行记录器.start()我得到运行时异常.Logcat显示以下错误消息.
09-23 15:47:54.462: E/AndroidRuntime(8697): FATAL EXCEPTION: main
09-23 15:47:54.462: E/AndroidRuntime(8697): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackage/com.mypackage.RecordingActivity}: java.lang.RuntimeException: start failed.
09-23 15:47:54.462: E/AndroidRuntime(8697): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2250)
09-23 15:47:54.462: E/AndroidRuntime(8697): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2300)
09-23 15:47:54.462: E/AndroidRuntime(8697): …Run Code Online (Sandbox Code Playgroud) android forceclose android-mediarecorder android-permissions
我正在我的完美工作的Android应用程序中集成admob.我设法让我的Jelly Bean(4.1.2)手机正常工作,但应用程序在我的蜂窝平板电脑(3.2)上崩溃并显示消息
java.lang.NoClassDefFoundError:android.net.http.HttpResponseCache
不确定是否相关但在我的清单文件中我设置了我的minSdkVersion ="9"
我似乎无法在Google上找到相关问题.谁看过这个吗?可能是什么原因?
编辑:libs文件夹中没有文件.一切都是使用gradle设置的.
我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="foo.bar.results"
android:versionCode="6"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/bar"
android:label="@string/app_name" >
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".bar"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
Run Code Online (Sandbox Code Playgroud) forceclose ×10
android ×9
admob ×1
crash ×1
ios ×1
nsurlsession ×1
stack ×1
swift ×1
termination ×1