Android:完成2次后无法重启应用

时间:2014-10-11 16:54:55

标签: java android restart

我目前正在开发一款Android应用,它必须在插入USB时启动视频,并在USB拔下时关闭视频。目前的问题是:它只能运行两次,之后应用程序无法启动(在log cat:bad process ...中)。我在android(和java)中完全是一个初学者。 这就是我的项目的工作方式: MainActivity启动在循环中打开的视频。 我已经设置了一个接收器,当插入USB时启动MainActivity。 我有另一个接收器,当USB拔下时会触发

这是杀死我的MainActivity的活动:

public class OffPowerReceiver extends BroadcastReceiver { 

@Override
public void onReceive(Context context, Intent intent) {
//        Intent i = new Intent(context, MainActivity.class);
//        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ((Activity) context).finish();   

    }   
}   

我确定我做得不好,也许这不是正确的事情。

这是我的主要活动结束:

@Override
protected void onDestroy() {
    super.onDestroy();

}

感谢您的帮助!

日志:

10-12 17:26:01.159: E/AndroidRuntime(21814): FATAL EXCEPTION: main
10-12 17:26:01.159: E/AndroidRuntime(21814): Process: com.example.video1, PID: 21814
10-12 17:26:01.159: E/AndroidRuntime(21814): java.lang.RuntimeException: Unable to start receiver com.example.video1.OffPowerReceiver: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to android.app.Activity
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2414)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.app.ActivityThread.access$1700(ActivityThread.java:135)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.os.Handler.dispatchMessage(Handler.java:102)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.os.Looper.loop(Looper.java:136)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.app.ActivityThread.main(ActivityThread.java:5001)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at java.lang.reflect.Method.invokeNative(Native Method)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at java.lang.reflect.Method.invoke(Method.java:515)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at dalvik.system.NativeStart.main(Native Method)
10-12 17:26:01.159: E/AndroidRuntime(21814): Caused by: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to android.app.Activity
10-12 17:26:01.159: E/AndroidRuntime(21814):    at com.example.video1.OffPowerReceiver.onReceive(OffPowerReceiver.java:15)
10-12 17:26:01.159: E/AndroidRuntime(21814):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2407)
10-12 17:26:01.159: E/AndroidRuntime(21814):    ... 10 more 
10-12 17:26:05.223: W/BroadcastQueue(575): Unable to launch app com.example.video1/10091 for broadcast Intent { act=android.intent.action.ACTION_POWER_CONNECTED flg=0x4000010 }: process is bad

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式关闭应用程序。

  1. 以编程方式触发usb拔出呼叫的广播接收器,而不是添加清单文件。这样你就可以完成活动的实例。

  2. onRecieve广播消息,杀死应用程序的过程(可选,在最坏的情况下,你可以使用它)

  3.   

    android.os.Process.killProcess(android.os.Process.myPid());