下一个过程很容易理解和复制,但会导致一个错误:
onCreate()方法中启动activityB
密码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="gleroy.com.algo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".activity.MainActivity"
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="gleroy.com.algo.activity.FakeA"
android:label="@string/app_name"></activity>
<activity
android:name="gleroy.com.algo.activity.FakeB"
android:label="@string/app_name"></activity>
</application>
</manifest>
活动A:
public class FakeA extends Activity {
private final static String TAG = FakeA.class.getCanonicalName();
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate, taskId :" + getTaskId());
super.onCreate(savedInstanceState);
Intent intent = new Intent(FakeA.this, FakeB.class);
startActivity(intent);
}
@Override
protected void onResume() {
Log.d(TAG, "onResume");
super.onResume();
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.stop_session_menu_item:
/* stop and quit */
finish();
return false;
}
return super.onOptionsItemSelected(item);
}
}
活动B:
public class FakeB extends Activity {
private final static String TAG = FakeB.class.getCanonicalName();
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate, taskId :"+getTaskId());
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume, isFinishing :" + isFinishing());
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
}
活动A从包含一个简单按钮的MainActivity启动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FakeA.class);
startActivity(intent);
}
});
所以我知道我们不能确定是否会调用
onDestroy()
,但我的活动A显然在泄漏。
我还观察到,如果我使用
Timer
和TimerWG
来延迟ActivityA中的start活动
或ActivityB中的完成()
,那么我不再有这个错误了。
以下是活动:
FakeA onCreate,任务ID:154
- 假简历
- FakeA on暂停,正在完成:false
- 伪造onCreate,任务ID:154
- 简历上的伪造,正在整理:假
- 假简历
- 假冒伪劣商品
- 呼叫finish或按back键:FakeA on Pause,isFinishing:true
最好的解决方案是简单地检测启动活动FakeB是否有用。
代替finish()
尝试finishafinity()
。据我所知:finish()。
问题内容: 由于某种原因,我完成后没有被调用。 我的班级干事: 我的onPostExecute(): 一切正常,我成功完成并返回一个布尔值,但随后就结束了。 谢谢 问题答案: 您是否在UI线程上创建了AsyncTask?还要在onPostExecute()方法上添加一个@Override注释,以确保正确声明了它。
React引入了新的静态方法,它在每个呈现方法之前都会被调用,但为什么呢?在prop change之后调用它对我来说是有意义的,但是在之后调用它就没有意义了,也许我错过了什么。 我根据公司的要求创建了一个组件,在组件中日期是从道具控制的。我在组件中有以下状态。 是的,我在中创建了一个额外的变量来跟踪是否由于而被调用,但我认为这不是正确的方法。 或者是我做错了什么或者遗漏了什么,或者不应该在之后调用
问题内容: 我通过扩展和实现和创建了自己的Android帐户身份验证器。其中的某些方法由调用,而其他方法则没有。 这很好用: 当我打电话给我时,问题就发生了。AccountManager不会调用我在中定义的方法。它调用其他一些默认方法,该方法仅在启动之前检查是否存在。 这是行不通的。它没有调用我的方法: AuthenticatorService 我创建了服务并定义了。否则不应该工作。 编辑: 我在
我想优雅地关闭一个线程。然而,一旦关闭被启动,线程应该在结束通常的操作后执行一些关闭操作。 两个线程都使用Hibernate和/或等待,并处理中断异常,它们还在一个循环中处理任务,只需要几毫秒。所以我期望while循环结束,因为Thread.currentThread()。isInterrupted()变为“true”。 问题是,对于我的代码,有时我会得到日志“SHUTDOWN”,有时不会。此外,
错误:------崩溃开始 08-04 05:53:11.807 266 7-2667/com.example.kwei.minigame1 E/AndroidRuntime:致命异常:main process:com.example.kwei.minigame1,PID:2667 java.lang.nullpointerException:试图在com.example.kwei.minigam
问题内容: 我偶然发现了一个问题,可以总结如下: 当我手动创建线程(即通过实例化)时,将适当地调用它。但是,当我与一起使用时,处理程序将被忽略。我错过了什么? 我期望:消息“未捕获的异常…”的三倍 我得到:消息一次(由手动创建的线程触发)。 在Windows 7和Mac OS X 10.5上用Java 1.6复制。 问题答案: 因为异常不会被捕获。 您的ThreadFactory生成的线程没有直接